jquery数据表跨页面的行计数

jquery数据表跨页面的行计数,jquery,datatables,Jquery,Datatables,我正在为我的HTML表使用jQuery DataTables插件 是否有一种方法可以跨页面获取表中行数的行计数 例如,如果我的表中有70行,假设50行显示在第1页,而20行显示在第2页。有没有办法获得70的计数 我尝试了这篇文章中的所有建议: 这包括: var rowCount=$('#myTable tr').length var rowCount=$('#myTable tr').size() var rowCount=$('#myTable>tbody>tr')。长度 var rowCo

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

是否有一种方法可以跨页面获取表中行数的行计数

例如,如果我的表中有
70
行,假设
50
行显示在第1页,而
20
行显示在第2页。有没有办法获得
70
的计数

我尝试了这篇文章中的所有建议:

这包括:

var rowCount=$('#myTable tr').length
var rowCount=$('#myTable tr').size()
var rowCount=$('#myTable>tbody>tr')。长度
var rowCount=$(“#myTable”).attr('rows').length


但是上面所有的建议似乎都返回了现有页面上的行数(在本例中是
50
而不是
70
)。

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

$(document).ready(function() {

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

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

使用服务器端分页时,您可以访问总记录计数,如下所示

dt.fnSettings()._iRecordsTotal;
如果您使用的是服务器端分页,则可以挂接到fnDrawCallback,并在绘制表时更新html

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

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

如果您使用滚动扩展,并使用搜索将行筛选到一个子集,则可以像下面这样获得该子集中的长度

$('#foo').dataTable().fnSettings().aiDisplay.length;
解决方案 用于数据表1.10

用于检索有关该表的信息,如下所示

属性
recordsTotal
将保存表中的记录总数

var table=$('#示例').DataTable({
“initComplete”:函数(设置,json){
var info=this.api().page.info();
console.log('总记录',info.recordsTotal);
console.log(“显示的记录”,信息记录显示);
}
});
演示 有关代码和演示,请参阅

笔记
此解决方案适用于客户端和服务器端处理模式,只要您在检索数据后使用,例如在回调函数中使用。

谢谢,这似乎是可行的。抱歉,但我也想知道关于datatables的其他信息。我正在从数据表中提取一些数据,并在AJAX调用中传递它们。如何确保我传递的数据来自所有行,而不仅仅是第一页上的行?谢谢,Pritish。@Pritish查看fnGetData函数的文档()。在没有参数的情况下(如我的示例中),它实际上返回一个2D数组,其中包含表中的所有数据。警报(oTable.fnGetData());打印整个HTML表格数据。但是,我如何从它访问单个HTML元素(特别是通过名称)?是的,我还可以确认它在服务器端似乎不起作用。我相信下面的答案在服务器端是有效的。如果应用搜索,这将显示大量已过滤的记录,而不是记录总数。此外,不建议再直接访问设置,请参阅,在可能的情况下应使用适当的API方法。我知道这就是它将显示的内容,如果我不清楚,请原谅。但是重点是,您不应该像这样访问它,而是现在就使用API。我应该删除我的答案吗?或者我们应该保留它,如果它能以某种方式帮助另一个人不这样做吗?它是有效的,所以你最好留下它。您只需要澄清它适用的DataTables版本(1.9-1.10)和限制(应用过滤的记录数,如果有)。这应该是解决方案,因为我可以确认它在服务器端和客户端都有效。其他解决方案只在客户端工作。