【问题标题】:datatable initialization - preventing the need for 2nd post postback数据表初始化 - 防止需要第二次回发
【发布时间】:2015-10-13 20:36:13
【问题描述】:

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

我正在尝试从服务器端动态创建我的数据表 (dt) 标头。发生的事情是,在我获得数据和列标题信息的初始帖子之后,我有第二个帖子到服务器(这是无关紧要的,因为我已经有了我的数据)。所以我禁用了它,但是我的 dt 没有正确初始化 - 我丢失了“导航按钮和分页信息显示,例如 -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) {

    });
};

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    解决方案

    您可能希望考虑使用 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 进行演示

    【讨论】:

    • 该死的。我有它,但将它设置为 -1(愚蠢的错误)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 2019-06-04
    相关资源
    最近更新 更多