web-dev-qa-db-fra.com

nombre de lignes jquery datatables sur plusieurs pages

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).

20
Pritish

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);
} );
26
Matt Peterson

SOLUTION

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);
    }
});

DEMO

Voir this jsFiddle pour le code et la démonstration.

REMARQUES

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.

10
Gyrocode.com

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);
     }
});
7
dotjoe

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;
0
radbyx