我有一个使用HTML文件中的静态数据的数据表。
使用“columnDefs data”函数或“columnDefs render”函数,我可以执行一些输出调整 - 根据内容消除部分TD,以及它们在当前显示页面上的位置(不改变数据来源)。
但是,当用户更改显示的行数时,我需要重置&重做我对数据的调整,因为不同的单元格现在需要消隐,之前空白的条目可能需要再次显示。
所以,我想要做的是在“length.dt”事件(刚改变的显示行数),调用某事导致Datatable重新渲染整个表,或者重新加载整个数据(从而调用我的columnDefs render或columnDefs数据函数)
这可能吗?或者我的方法有缺陷,我需要找到另一种方式?
答案 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
})