web-dev-qa-db-ja.com

ページ全体のjqueryデータテーブルの行数

HTMLテーブルにjQuery DataTablesプラグインを使用しています。

ページ間でテーブルの行数の行数を取得する方法はありますか?.

たとえば、テーブルに_70_行があり、それらの_50_が1ページ目に表示され、2ページ目に_20_が表示されているとします。 _70_のカウントを取得する方法はありますか?

私はこの投稿に含まれているすべての提案を試しました: jQuery:count number of rows in a table

これも:

var rowCount = $('#myTable tr').length;
var rowCount = $('#myTable tr').size();
var rowCount = $('#myTable >tbody >tr').length;
var rowCount = $("#myTable").attr('rows').length;

しかし、上記のすべての提案は、既存のページの行数を返すようです(この場合、_50_ではなく_70_)。

21
Pritish

DataTablesが現在のページにない行をDOMから削除しているようです。そのため、jQueryセレクターでそれらをカウントすることはできません。 DataTables API 、特にfnGetData関数を使用する必要があります。

$(document).ready(function() {

    // Initialize your table
    var oTable = $('#myTable').dataTable();

    // Get the length
    alert(oTable.fnGetData().length);
} );
26
Matt Peterson

解決

DataTables 1.10の場合

page.info() を使用して、以下に示すようにテーブルに関する情報を取得します。

プロパティrecordsTotalは、テーブル内のレコードの総数を保持します。

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

デモ

コードとデモについては this jsFiddle を参照してください。

ノート

page.info() を使用する限り、このソリューションはクライアント側とサーバー側の両方の処理モードで機能します。たとえば、 initComplete コールバック関数。

12
Gyrocode.com

サーバー側のページングを使用すると、次のように合計レコード数にアクセスできます...

dt.fnSettings()._iRecordsTotal;

サーバー側のページングを使用している場合は、fnDrawCallbackにフックして、テーブルが描画されるたびにHTMLを更新できます...

$('#Table').dataTable({
    "fnDrawCallback": function (oSettings) {
        alert(oSettings._iRecordsTotal);
     }
});
8
dotjoe

Scroller拡張機能を使用していて、検索を使用して行をサブセットに絞り込む場合、次のようにそのサブセットの長さを取得できます

$('#foo').dataTable().fnSettings().aiDisplay.length;
0
radbyx