【问题标题】:Refresh Datatable 1.9 without deleting all the rows刷新Datatable 1.9 不删除所有行
【发布时间】:2014-11-10 11:58:47
【问题描述】:

我正在使用 dataTables js 1.9

对服务器的 ajax 调用从服务器获取我希望每 60 秒左右显示在表中的信息。

我在实施清除表格并重新填充表格的解决方案时没有问题:

$(id).dataTable().fnClearTable();
for( var i = 0 ; i < json.response.length; i++ ){
    $(id).dataTable().fnAddData([ json.response[i] ]);
}

问题是每次重新加载时,用户都会被推回第 1 页,因为表会暂时为空,然后只有 1 页。

我想实现一个解决方案,首先搜索不在结果中的行,删除这些行,然后添加不在表中的行。为此,我需要能够通过一个值来定位一行,但我在 http://datatables.net/docs/DataTables/1.9.4/DataTable.html

中找不到它

有人对如何做到这一点有任何想法吗?

【问题讨论】:

    标签: javascript jquery ajax datatable


    【解决方案1】:

    您无需删除数据并重新填充,只需重新绘制即可。

    var oTable = $("table").dataTable({ ... your settings ... });
    
    //redraws the table
    oTable.fnDraw();
    

    【讨论】:

    • 但是我在哪里添加数据呢?我最初在表中有行 {a,b,c}。我收到一个带有行 {a,b,d} 的 ajax 调用。使用您的方法我将如何反映这一点?
    • 如果数据在同一个数据集中更新,然后用上面的代码重绘表格,会再次调用ajax刷新数据,并会自动更新数据表。就像刷新页面一样,无需刷新页面。如果您需要返回完全不同的数据集,请考虑制作另一个数据表。
    • 如何访问数据集?在我的场景中,我只使用 fnAddData() 将行附加到空表中。我不知道您将如何将数据添加到表中,因为我看不到要从中填充数据表的数据集。
    • 我应该提到我没有使用内置 API。我会研究它是如何工作的。
    • 您需要进入数据表对象,将其更新为aoData 属性/对象,该属性/对象包含数据表中的所有数据。如果您记录该对象,您可以看到它的所有属性以及它是如何使用它们的。为此使用console.log(oTable);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 2019-02-14
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多