如何在jQuery DataTables上重新初始化数据排序?

Jel*_*eij 1 sorting datatable jquery

我正在我的项目中使用jQuery Datatables,并通过使用data-sort此处描述的属性在列上提供"自定义值"排序:https: //datatables.net/examples/advanced_init/html5-data-attributes.html

工作良好.但是现在我使用Javascript/jQuery更新这些属性的值,而dataTable没有考虑新值,它仍然使用原始值进行排序.

直接对属性进行更新:

$('td#myColumnId').attr('data-order', newValue);
Run Code Online (Sandbox Code Playgroud)

如何强制我的dataTable重新初始化我的自定义排序值?

到目前为止,我已经尝试了.draw(),.dataTable()但不幸的是,这是行不通的.

我期待着一个可能的解决方案.

dav*_*rad 6

你需要invalidate()单元格.dataTables没有机会知道您以编程方式更改了列中一个或多个单元格的正交数据(=自定义排序值).如果你有一个像这样的实例

var table = $('#example').DataTable();
Run Code Online (Sandbox Code Playgroud)

并改变data-order

$('td#myColumnId').attr('data-order', newValue);
Run Code Online (Sandbox Code Playgroud)

然后invalidate是细胞/柱

table.cells("#myColumnId").invalidate();
Run Code Online (Sandbox Code Playgroud)

  • 你是对的,它工作正常,即使是`cell.invalidate()`,请参阅[this jsFiddle](https://jsfiddle.net/kf8tad7f/2/).很棒的答案! (2认同)
  • 谢谢大家,这个工作!`.invalidate()`之前给我发了一个错误(dataTables版本1.10.7),但是Gyrocodes对每晚构建的评论指出我更新到(当前)最新版本1.10.9的方向.与`.invalidate`结合使用可以完美运行. (2认同)