数据表刷新draw(),ajax,分页

时间:2015-07-07 20:35:23

标签: javascript datatables datatables-1.10

我正在尝试每隔几秒钟从服务器刷新我的表。它正在加载新数据,但分页根本不起作用。我的意思是,这是一个很重要的数据列表。它还在表格的底部说Showing 0 to 0 of 0 entries (filtered from NaN total entries)。{/ p>

我在setInterval函数中使用.Rtf来实现刷新。我想在不使用"serverSide":"true"的情况下执行此操作,但我发现draw()除非使用ajax选项,否则不会调用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数据并正确设置分页?

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:1)

确保您的AJAX功能正在返回:sEcho,iTotalRecords,iTotalDisplayRecords和iDisplayLength。

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

您可以在https://datatables.net/forums/discussion/512/clarification-of-itotalrecords-and-itotaldisplayrecords

上详细了解这些参数