如何强制数据表重新渲染或重新加载静态数据?

时间:2016-02-03 10:47:28

标签: javascript jquery datatables

我有一个使用HTML文件中的静态数据的数据表。

使用“columnDefs data”函数或“columnDefs render”函数,我可以执行一些输出调整 - 根据内容消除部分TD,以及它们在当前显示页面上的位置(不改变数据来源)。

但是,当用户更改显示的行数时,我需要重置&重做我对数据的调整,因为不同的单元格现在需要消隐,之前空白的条目可能需要再次显示。

所以,我想要做的是在“length.dt”事件(刚改变的显示行数),调用某事导致Datatable重新渲染整个表,或者重新加载整个数据(从而调用我的columnDefs render或columnDefs数据函数)

这可能吗?或者我的方法有缺陷,我需要找到另一种方式?

3 个答案:

答案 0 :(得分:15)

使用rows().invalidate()使所有行的数据无效,并使用draw()重绘表格。

请注意,如果您使用Javascript数据结构('data'rows().invalidate('data')选项),则data需要columns.render

$('#your_table').DataTable()
   .rows().invalidate('data')
   .draw(false);

答案 1 :(得分:1)

您可以在length.dt事件上重绘整个DataTable。

$('#your_table').on('length.dt', function (){
     setTimeout(function() {
         //draw('page') redraws your DataTable and preserves the page where it was
         $('#your_table').DataTable().draw('page');
     }, 100);
});

修改

在这里,您可以看到要传递给draw方法的更多信息和其他参数:https://datatables.net/reference/api/draw%28%29

答案 2 :(得分:0)

使用'destroy': true

$("#your_table").dataTable({
  'destroy': true
})