jquery数据表跨页面的行计数
我正在为我的HTML表使用jQuery DataTables插件 是否有一种方法可以跨页面获取表中行数的行计数 例如,如果我的表中有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
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)和限制(应用过滤的记录数,如果有)。这应该是解决方案,因为我可以确认它在服务器端和客户端都有效。其他解决方案只在客户端工作。