在使用Datatables(版本:1.10.16)时,我注意到API中的数据并没有通过回调中的ajax.reload
立即更新,即使该站点表示直到新数据被调用后才调用回调到达并重新绘制。
请注意:
ajax.reload
之前和之后的表中,包括重新加载的新数据。ApplyHeaderFilters
可以正常工作。当我说API正确看到数据时,我的意思是这样的:
$('#dtTbl').DataTable().column('1:visible').data().unique()
ApplyHeaderFilters
是ajax.reload
上的回调,并使用上面的JS命令从列中获取唯一值。 JS命令返回的数据不反映重新加载返回的新数据。
这在“准备好文档”中:
batchDT = $('#dtTbl').DataTable( {
deferLoading: true,
pageLength: 25,
pagingType: 'simple_numbers',
scrollx: true,
initComplete: function () {
ApplyHeaderFilters($(this).attr('id'), this.api());
},
ajax: {
url: "mysite.cfm?method=gettabledata",
type: 'POST'
},
columns: [
{ title: "Description", name: "description", data: "description"},
{ title: "Is Active", name: "isactive", data: "isactive"},
{ title: "List Item ID", name: "listitemid", data: "listitemid"},
{ title: "Name", name: "name", data: "name"},
{ title: "Table Ref ID", name: "tablerefid", data: "tablerefid", orderable: false}
]
} );
$("#reload").on('click',function(){
batchDT.ajax.reload(ApplyHeaderFilters('dtTbl', $('#dtTbl').DataTable()));
});
答案 0 :(得分:0)
由于某种原因,在重新加载完成之前调用了回调。我通过将回调函数包装在anon函数的reload中来解决此问题。如果有人知道为什么会这样,请发表评论。我觉得它与闭包以及它们如何处理数据表库中的回调有关。
$("#reload").on('click',function(){
batchDT.ajax.reload(function(){
ApplyHeaderFilters('dtTbl', $('#dtTbl').DataTable());
});
});