【问题标题】:Datatables refresh with draw(), ajax, pagination使用 draw()、ajax、分页刷新数据表
【发布时间】:2015-09-25 13:01:14
【问题描述】:

我正在尝试每隔几秒钟使用来自服务器的数据刷新我的表。它正在加载新数据,但分页根本不起作用。我的意思是,这是一个大数据列表。表格底部的分页也是Showing 0 to 0 of 0 entries (filtered from NaN total entries)

我在setInterval 函数中使用draw(false) 来实现刷新。我想在不使用"serverSide":"true" 的情况下执行此操作,但我发现draw() 不会调用ajax url,除非我使用serverSide 选项。

function myFunction() { 
var table1 = $("#example1").dataTable({
    "ajax": '/api/GetData',
    "serverSide": "true",
    "columns": [
        {
            "data": "DateCreated",                
        },
        { "data": "UserName" }
    ],
    "destroy": true
});

setInterval(function test() {        
    table1.draw(false);
}, 3000);
}

当我省略 "serverSide":"true" 时,表格会使用分页正确绘制,但不会使用 draw() 调用 ajax。如何获取 ajax 数据并正确设置分页?

【问题讨论】:

    标签: javascript datatables datatables-1.10


    【解决方案1】:

    使用ajax.reload() 从Ajax 数据源重新加载表数据,并将false 作为第二个参数以避免重置当前分页位置。

    table1.api().ajax.reload(null, false);
    

    由于您的表是使用dataTable() 初始化的,因此可以使用table1.api() 方法访问API 方法。否则,如果使用DataTable() 初始化表,则可以直接使用table1 访问API 方法。请参阅DataTables API 了解更多信息。

    【讨论】:

    • 正是我想要的!找了一会儿,没有出现这个,只有draw函数。
    【解决方案2】:

    确保您的 AJAX 函数正在返回:sEcho、iTotalRecords、iTotalDisplayRecords 和 iDisplayLength。

    另外,当你调用dataTable函数时,在客户端设置“iDisplayLength”:500。

    你可以在https://datatables.net/forums/discussion/512/clarification-of-itotalrecords-and-itotaldisplayrecords阅读更多关于这些参数的信息

    【讨论】:

    • 谢谢,看起来这个链接适用于旧版本的数据表,但我认为 1.10 中也有同样的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多