使用 jquery Datatable 插入新行时禁用/防止搜索回调

Posted

技术标签:

【中文标题】使用 jquery Datatable 插入新行时禁用/防止搜索回调【英文标题】:Disable/Prevent search callback when inserting new row with jquery Datatable 【发布时间】:2017-05-17 22:51:29 【问题描述】:

背景:

我有一个我在 JS 中创建的数据表:

let mytable = $('#myTableId').DataTable();

稍后在我的代码中,我以编程方式将 5 行添加到此数据表中,如下所示:

for(let i=0; i<5; i++)
    mytable.row.add(someVectorValuedFunction(i)).draw(false);

问题:

每次在数据表'mytable'中插入一行,都会调用数据表排序函数。排序函数的运行时间为 O(n) - 即,它遍历每一行并决定是显示该行还是隐藏它。因此,将 n 行插入 'mytable' 具有 O(n^2) 的有效最坏情况复杂度。确切的复杂性类似于 n(n-1) 变成排序周期的运行聚合。

约束:

我需要能够在某个时候对表格进行排序。这意味着我找到的任何解决方案都必须与表格的排序能力一致我需要能够禁用然后启用对表格的排序。

问题:

如何防止每次将行插入 jQuery 数据表时调用排序函数?

【问题讨论】:

【参考方案1】:

只需更改 draw(false) -> draw('page')。 这应该会阻止绘图函数根据文档重新排序和重新排序。

https://datatables.net/reference/api/draw()

【讨论】:

哇,这很简单。谢谢!

以上是关于使用 jquery Datatable 插入新行时禁用/防止搜索回调的主要内容,如果未能解决你的问题,请参考以下文章

jQuery DataTable - 添加新行有效,但无法使其可编辑(可编辑)

DataTable update() 插入重复的新行而不检查它是不是存在

在 DataTable 中插入新行

Jquery在某个索引处将新行插入表中

Jquery:在包含特定列值的行之后插入新行

jquery中的dataTable表格控件中如何插入超链接或者按钮?