jquery数据表跨页面的行数
我正在为我的HTML表使用jQuery DataTables插件。
有没有办法在页面中获取表格中行数的行数。
例如,如果我的表中有70
行,并且假设其中50
行显示在第1页上,而20
显示在第2页上。 有没有办法获得70
的计数?
我已经尝试了这篇文章中包含的所有建议: jQuery:计算表中的行数
这包括:
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); } });
DEMO
有关代码和演示,请参阅此jsFiddle 。
笔记
只要在检索到数据后使用page.info()
此解决方案将适用于客户端和服务器端处理模式,例如在initComplete
回调函数中。
使用服务器端分页时,您可以像这样访问总记录数…
dt.fnSettings()._iRecordsTotal;
如果你正在使用服务器端分页,你可以挂钩到fnDrawCallback并在每次绘制表时更新你的html …
$('#Table').dataTable({ "fnDrawCallback": function (oSettings) { alert(oSettings._iRecordsTotal); } });
如果您正在使用Scroller扩展,并使用搜索将行过滤到子集,您可以获得该子集的长度,如下所示
$('#foo').dataTable().fnSettings().aiDisplay.length;
在您的datatable ajax调用的JSON响应中,我们将’iTotalDisplayRecords’作为该响应JSON对象的属性之一。 您可以直接使用’iTotalDisplayRecords’的值作为数据表中的记录数。