数据表初始化 - 防止需要第二次回发后

时间:2015-10-13 20:36:14

标签: jquery datatables

我使用datatables.net创建数据表(jquery)

我试图从服务器端创建我的datatable(dt)标头。会发生的事情是,在我获得数据和列标题信息的初始帖子后,我有第二个帖子到服务器(这是不相关的,因为我已经有我的数据)。所以我禁用它,但后来我的dt没有正确初始化 - 我丢失"导航按钮和分页信息显示例如-1总共-1的记录中的1。

是否有任何方法可以防止第二次回击,但有一个"正确的" dt初始化?此时我需要设置oTable.fnDraw(false)以保持正确的初始化

this.initialize = function () {

    internalHtmlID = getHtmlIdentifier(id);

    $.ajax({
        method: "GET",
        url: url
    })
    .done(function (data) {
        internalHtmlID = getHtmlIdentifier(id);
        var oTable = $('' + internalHtmlID + '').dataTable({
            "aaSorting": [[0, "desc"]],
            "bServerSide": true,
            "processing" : true,
            "deferLoading": -1,
            "aaData": data.aaData,
            //"aaData": null,
            "aoColumns": data.aoColumns,

            "ajax": {
                "url": url,
                "dataType": "json"
            }

        });
        oTable.fnDraw(false);
    })
    .fail(function (msg) {

    });
};

1 个答案:

答案 0 :(得分:0)

  

<强>解

您可能希望使用deferLoading来延迟加载服务器端数据,直到第二次抽奖。

var oTable = $('' + internalHtmlID + '').dataTable({
    "aaSorting": [[0, "desc"]],
    "bServerSide": true,
    "processing" : true,
    "deferLoading": data.iTotalRecords,
    "aaData": data.aaData,
    "aoColumns": data.aoColumns,
    "ajax": {
        "url": url,
        "dataType": "json"
     }
});
  

<强>样本

请参阅this jsFiddle进行演示