有人知道或了解如何重新加载页面内多个DataTable的内容吗? 这是我到目前为止初始化DataTable的代码:
$('.notifications_list_table').dataTable( {
"aaSorting": [[ 0,"desc" ]],
"sPaginationType": "full_numbers",
"aoColumns": [null,null],
"bLengthChange": false
});
如您所见,我使用一个类来识别和初始化所有DataTable。现在我想在服务器上至少进行一次更改的内容时更新它们。
我怎么能这样做?我看到fnAjaxReload可以用来在一个DataTable中加载数据但是在这里,我想在一个ajax调用中获得多个“aaData”......
答案 0 :(得分:2)
因此,除非您使用长轮询或websockets,否则客户端无法知道服务器端的更改。但您始终可以按设定的间隔更新;对于长时间间隔,请求的“费用”是微不足道的。对于短的间隔(每秒一次或其他),它变得更像是一个讨论点。
虽然DataTables站点有一些简化的例子,但在我看来,将初始化对象存储到变量是个好习惯:
var notificationTables = $('.notifications_list_table').dataTable( {
/* initialization parameters */
});
现在只需在对象上调用正确的函数来更新表即可。我正在使用服务器端处理,所以我像这样重新绘制:
notificationTables.fnDraw(false);
示例代码中缺少的是您获取数据的方式。您提供的代码段假定数据已经在DOM中。所以我上面提供的代码实际上并没有做任何事情来获取新数据。
在我的申请中,我是这样做的(如果这不是最好的方式,我很高兴有人给我看一些更好的东西!没有自豪!):
jQuery.extend()
连接到基础对象,生成所有必需参数的新完整对象。var tableOne = $('#tableOne').dataTable(tableOneParams);
(等;每个表一个)。var getNewDT = function() {
tableOne.fnDraw(false);
tableTwo.fnDraw(false);
};
然后当我需要更新它们时,调用getNewDT()
就会很简单。
希望有所帮助。 ; - )
答案 1 :(得分:0)
我从未使用过数据表(但看起来很棒)。我猜你可以这么做......
"sAjaxSource": "yourajax.php?tabid=" + $(this).attr('id')
作为参数,因此每个表都会使用不同的tabid调用yourajax.php,您可以在其中返回表特定数据