J'utilise le plug-in jQuery DataTables pour mon tableau HTML.
Existe-t-il un moyen d’obtenir le nombre de lignes du nombre de lignes de mon tableau sur plusieurs pages?.
Par exemple, si j'ai des lignes 70
dans ma table, et disons que 50
est affiché sur la 1ère page et 20
sur la 2ème page. Existe-t-il un moyen d'obtenir le nombre de 70
?
J'ai essayé toutes les suggestions incluses dans ce post: jQuery: compter le nombre de lignes d'un tableau
Ceci comprend:
var rowCount = $('#myTable tr').length;
var rowCount = $('#myTable tr').size();
var rowCount = $('#myTable >tbody >tr').length;
var rowCount = $("#myTable").attr('rows').length;
Mais toutes les suggestions ci-dessus semblent renvoyer le nombre de lignes de la page existante (dans ce cas, 50
et non 70
).
Il semble que DataTables supprime du DOM les lignes qui ne figurent pas sur la page en cours, vous ne pourrez donc pas les compter avec un sélecteur jQuery. Vous devrez utiliser le DataTables API , en particulier la fonction fnGetData
:
$(document).ready(function() {
// Initialize your table
var oTable = $('#myTable').dataTable();
// Get the length
alert(oTable.fnGetData().length);
} );
Pour les DataTables 1.10
Utilisez page.info()
pour récupérer des informations sur le tableau, comme indiqué ci-dessous.
La propriété recordsTotal
contiendra le nombre total d'enregistrements dans la table.
var table = $('#example').DataTable({
"initComplete": function(settings, json){
var info = this.api().page.info();
console.log('Total records', info.recordsTotal);
console.log('Displayed records', info.recordsDisplay);
}
});
Voir this jsFiddle pour le code et la démonstration.
Cette solution fonctionne pour les modes de traitement côté client et côté serveur tant que vous utilisez page.info()
une fois les données extraites, par exemple dans la fonction initComplete
callback.
Lorsque vous utilisez la pagination côté serveur, vous pouvez accéder au nombre total d'enregistrements comme suit ...
dt.fnSettings()._iRecordsTotal;
Si vous utilisez la pagination côté serveur, vous pouvez vous connecter à fnDrawCallback et mettre à jour votre code HTML lorsque la table est dessinée ...
$('#Table').dataTable({
"fnDrawCallback": function (oSettings) {
alert(oSettings._iRecordsTotal);
}
});
Si vous utilisez l'extension Scroller et utilisez search pour filtrer les lignes en un sous-ensemble, vous pouvez obtenir la longueur de ce sous-ensemble comme ceci
$('#foo').dataTable().fnSettings().aiDisplay.length;