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’的值作为数据表中的记录数。