5

ソートを無効にして "bDeferRender": true で約 2500 行をレンダリングしようとしています。chrome(v27)で40秒くらいかかります。Datatables 1.9 と jquery 2 を使用しています。

settingsのデータテーブルのデータテーブル:

var oSettings = {
    'bDestroy': true,
    "bInfo": true,
    "bProcessing": true,
    "bDeferRender": true,
    'iDisplayLength': 10,
    'sPaginationType': 'full_numbers',
    'sDom': '<"top"i> T<"clear">lfrtip',
    'sPageButtonActive': "paginate_active",
    'sPageButtonStaticDisabled': "paginate_button",
    "oLanguage": {
        "sSearch": "Futher Filter Search results:",
        "sInfo": "Got a total of _TOTAL_ results to show (_START_ to _END_)",
        "sLengthMenu": 'Show <select>' +
                '<option value="5">5</option>' +
                '<option value="10">10</option>' +
                '<option value="15">15</option>' +
                '<option value="20">20</option>' +
                '<option value="25">25</option>' +
                '</select> results'
    },
    "bSort": false
};
4

1 に答える 1

13

oTable.fnAddData(cells)簡単な推測:各行に 1 回、このように fnAddData を使用しています。これにより、追加するたびに DataTable が再描画されます。2 番目のパラメーターを追加しますfalse(例: ) oTable.fnAddData(cells,false)。次に、ループの後、 を呼び出しますoTable.fnDraw()。これにより、2500回ではなく1回だけ再描画されます。

このフィドルを参照してください: http://jsfiddle.net/V2Kdz/

[Populate] ボタンをクリックして、テーブルにデータを入力します。

12 行目は次のとおりです。

var ai = t.fnAddData(cells,false);

redraw パラメーターを false にすると、表は 1 秒未満で描画されます (私の 2011 年半ばの Mac Air では)。redraw パラメータを true に設定した場合 (または、デフォルトが true であるため削除した場合)、1 分以上かかります。

于 2013-06-05T12:16:52.217 に答える