使用draw()、ajax、分页刷新数据表

Datatables refresh with draw(), ajax, pagination

本文关键字:分页 刷新 数据表 ajax 使用 draw      更新时间:2023-09-26

我试图每隔几秒钟用来自服务器的数据刷新我的表。它正在加载新数据,但分页根本不起作用。我的意思是,这是一个大的数据列表。它还说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"表是正确绘制的分页,但ajax不调用draw()。如何获得ajax数据并正确设置分页?

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

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

因为你的表是用dataTable()初始化的,所以API方法可以用table1.api()方法访问。否则,如果使用DataTable()初始化表,则可以直接使用table1访问API方法。

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

同时,在客户端调用dataTable函数时,设置"iDisplayLength": 500。

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