5

我正在尝试在禁用排序和“bDeferRender”的情况下渲染大约 2500 行:true。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

快速猜测:您正在像这样使用 fnAddData oTable.fnAddData(cells),每行一次。这将导致 DataTable 在每次添加后重绘。添加第二个参数false,例如,oTable.fnAddData(cells,false)。然后在你的循环之后,调用oTable.fnDraw(). 这将只重绘一次而不是 2500 次。

看到这个小提琴:http: //jsfiddle.net/V2Kdz/

单击“填充”按钮以填充表格。

第 12 行是:

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

重绘参数为 false 时,表格在不到一秒的时间内绘制(在我 2011 年中期的 Mac Air 上)。如果将 redraw 参数设置为 true(或将其删除,默认为 true),则需要一分钟以上。

于 2013-06-05T12:16:52.217 回答