我有以下表格初始化代码
var myTable = $jq11('#myTable').dataTable({
"ajax": someUrl,
"aoColumnDefs": [
{ "bSortable": false, "aTargets": [0, 6, 7] }
],
"columns": [
{
...
},
...
],
// "deferRender": true,
"dom": 'l<"#removeButtonDiv.removeButton">rtip',
"filter": false,
"initComplete": function(settings, json) {
$('#removeButtonDiv').html('<input id="removeButton" type="button" value="Remove" style="float:right; height: 25px;" disabled />');
},
"lengthMenu": [ [20, 40, 60, 80, 100], [20, 40, 60, 80, 100] ],
"language": {
"emptyTable": "No data to list",
"infoFiltered": " "
},
"order": [[4, "desc"]],
"processing": true,
"drawCallback": function( settings ) {
$.each(selected, function(index, value){
$('#'+value).attr("checked", "checked");
});
},
"serverSide": true
//,"sPaginationType": "input"
});
但是
alert($(myTable.fnGetNodes()).length);
始终显示20这是我的页面大小。因为我有5页完整记录。它不会显示100.如果我错过任何有关此api的信息,请告诉我。
感谢。
答案 0 :(得分:1)
我对数据表的了解不是很大,但在阅读API并查找this SO Post以及here中的一些信息后,我得出结论,取决于您使用的设置fnGetNodes()
行为不同。
由于表是在服务器端处理的,.fnGetNodes()
只会获取当前生成的元素。数据表似乎没有直接的方法来获取服务器端处理的所有行,因为服务器只返回当前请求的行。
<小时/> 如果您只想查看它们,则返回的ajax响应应该包含总行数https://datatables.net/manual/server-side#Example-data
var myTable = $jq11('#myTable').dataTable({
"ajax": {
"url": someUrl,
"dataSrc": function ( json ) {
console.log('Total : ' + json.recordsTotal.length);
return json;
}
},
/* ... */
});
答案 1 :(得分:0)
use the fnSettings().fnRecordsTotal() of the datatable.
example : http://www.datatables.net/forums/discussion/2401/record-count-with-server-side-processing
我之前使用过它,我想我可以给你一个片段:
var table = $('#table ').DataTable(
{
"dom" : 'rtp', // Initiate drag column
"fnDraw" : false,
"serverSide": true,
"ajax" : ... ...
}
}),
"fnDrawCallback" : drawCallBack,
});
function drawCallBack() {
console.log(this.fnSettings().fnRecordsTotal());
}
答案 2 :(得分:0)
如果您想计算所有行数,请使用以下内容:
sysreturn
在您的回调方法中。 this.fnSettings().fnRecordsTotal()
会在fnGetNodes()
标记内提供所有行,但如果您想使用tbody
进行计数,请使用如下:
fnGetNodes()