不计算fnGetNodes()的所有行

时间:2015-02-04 15:10:25

标签: jquery datatables datatables-1.10

我有以下表格初始化代码

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的信息,请告诉我。

感谢。

3 个答案:

答案 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());
}

检查小提琴:http://jsfiddle.net/ns7mt3La/

答案 2 :(得分:0)

如果您想计算所有行数,请使用以下内容:

  1. sysreturn在您的回调方法中。
  2. this.fnSettings().fnRecordsTotal()会在fnGetNodes()标记内提供所有行,但如果您想使用tbody进行计数,请使用如下:

    fnGetNodes()