23

我正在为我的 HTML 表使用 jQuery DataTables 插件。

有没有办法获取我的表格中跨页的行数的行数。

例如,如果我70的表中有行,假设50它们显示在第一页和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)。

4

5 回答 5

26

看起来 DataTables 正在从 DOM 中删除不在当前页面上的行,因此您将无法使用 jQuery 选择器对它们进行计数。您必须使用DataTables API,特别是fnGetData函数:

$(document).ready(function() {

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

    // Get the length
    alert(oTable.fnGetData().length);
} );
于 2010-07-13T14:39:38.287 回答
12

解决方案

对于数据表 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);
    }
});

演示

有关代码和演示,请参阅此 jsFiddle

笔记

只要您page.info()在检索到数据后使用此解决方案,例如在initComplete回调函数中,此解决方案就适用于客户端和服务器端处理模式。

于 2015-09-10T14:14:19.663 回答
8

使用服务器端分页时,您可以像这样访问总记录数......

dt.fnSettings()._iRecordsTotal;

如果您使用服务器端分页,您可以挂接到 fnDrawCallback 并在绘制表格时更新您的 html...

$('#Table').dataTable({
    "fnDrawCallback": function (oSettings) {
        alert(oSettings._iRecordsTotal);
     }
});
于 2011-08-08T18:34:01.210 回答
0

如果您使用 Scroller 扩展,并使用搜索将行过滤到子集,则可以像这样获取该子集的长度

$('#foo').dataTable().fnSettings().aiDisplay.length;
于 2015-09-10T07:25:09.123 回答
-2

在您的数据表 ajax 调用的 JSON 响应中,我们将“iTotalDisplayRecords”作为该响应 JSON 对象的属性之一。您可以直接使用“iTotalDisplayRecords”的值作为数据表中的记录数。

于 2015-06-24T13:18:59.297 回答