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
_)。
DataTablesが現在のページにない行をDOMから削除しているようです。そのため、jQueryセレクターでそれらをカウントすることはできません。 DataTables API 、特にfnGetData
関数を使用する必要があります。
$(document).ready(function() {
// Initialize your table
var oTable = $('#myTable').dataTable();
// Get the length
alert(oTable.fnGetData().length);
} );
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
コールバック関数。
サーバー側のページングを使用すると、次のように合計レコード数にアクセスできます...
dt.fnSettings()._iRecordsTotal;
サーバー側のページングを使用している場合は、fnDrawCallbackにフックして、テーブルが描画されるたびにHTMLを更新できます...
$('#Table').dataTable({
"fnDrawCallback": function (oSettings) {
alert(oSettings._iRecordsTotal);
}
});
Scroller拡張機能を使用していて、検索を使用して行をサブセットに絞り込む場合、次のようにそのサブセットの長さを取得できます
$('#foo').dataTable().fnSettings().aiDisplay.length;