有人知道或知道如何重新加载页面内多个数据表的内容吗? 这是我到目前为止初始化数据表的代码:
$('.notifications_list_table').dataTable( {
"aaSorting": [[ 0,"desc" ]],
"sPaginationType": "full_numbers",
"aoColumns": [null,null],
"bLengthChange": false
});
如您所见,我使用一个类来识别和初始化所有数据表。现在,当服务器上至少一项内容发生更改时,我想将它们全部更新。
我怎样才能做到呢?我看到 fnAjaxReload 可用于在一个 DataTable 中加载数据,但在这里,我想在一次 ajax 调用中获取多个“aaData”...
最佳答案
因此,除非您使用长轮询或 Websocket,否则客户端无法意识到服务器端的更改。但您始终可以按照设定的时间间隔进行更新;对于较长的间隔,请求的“费用”是微不足道的。对于短时间间隔(每秒一次或其他),它更像是一个讨论点。
尽管 DataTables 站点有一些简化的示例,但我认为将初始化对象存储到变量是一个很好的做法:
var notificationTables = $('.notifications_list_table').dataTable( {
/* initialization parameters */
});
现在只需在对象上调用正确的函数来更新表即可。我正在使用服务器端处理,所以我像这样重新绘制:
notificationTables.fnDraw(false);
示例代码中缺少的是获取数据的方式。您提供的代码片段假定数据已在 DOM 中。因此,我上面提供的代码实际上不会执行任何操作来获取新数据。
在我的应用程序中,我就是这样做的(如果这不是最好的方法,我很高兴有人向我展示更好的东西!这里没有骄傲!):
- 我创建了一个初始化对象,其中包含所有表使用的参数。
- 我为每个具有自定义值(例如数据源 URL、列标签、fnRowCallback 函数等)的单独表创建一个单独的新对象,并使用
jQuery.extend()
将其连接到基础对象。 ,生成一个包含所有必需参数的新的完整对象。 - 像这样初始化:
var tableOne = $('#tableOne').dataTable(tableOneParams);
(等等;每 table 一个)。 - 我只是单独调用更新。我的方法有点复杂,因为它有一些带有暂停/恢复和空闲检测内容的轮询机制,但它实际上可以归结为一个幻想版本:
var getNewDT = function() {
tableOne.fnDraw(false);
tableTwo.fnDraw(false);
};
然后,当我需要更新它们时,只需调用 getNewDT()
即可。 .
希望能有所帮助。 ;-)
关于javascript - 重新加载多个数据表的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9912618/