0

次のテーブル初期化コードがあります

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 について何か不足している場合はお知らせください。

ありがとう。

4

3 に答える 3

1

データテーブルに関する私の知識はそれほど大きくありませんが、API を読んでこの SO 投稿とここからの情報を見つけると、使用している設定によって動作が異なるという結論に達しましたfnGetNodes()

テーブルはサーバー側で処理されるため、現在生成されている要素.fnGetNodes()のみを取得します。サーバーは現在要求されている行のみを返すため、Datatables にはサーバー側の処理ですべての行を取得する直接的な方法がないようです。


ただし、それらをカウントするだけの場合は、返される 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;
        }
     },
     /* ... */
});
于 2015-02-04T15:58:04.757 に答える
0
于 2015-02-05T02:19:15.073 に答える
0

すべての行をカウントする場合は、以下を使用します。

  1. this.fnSettings().fnRecordsTotal()コールバック メソッドで。
  2. fnGetNodes()タグ内のすべての行を提供しますtbodyが、使用してカウントしたい場合は、fnGetNodes()次のように使用します。

    this.fnGetNodes().length  //will count all rows
    
于 2016-03-16T04:18:22.267 に答える