DataTable 没有正确过滤新插入的数据

作为参考,我使用的是 DataTable.js 版本 1.10.21 和 DataTables Select 版本 1.3.1


我创建了一个带有可以更新的“状态”列的数据表。此列也有一个过滤器。过滤器在表的初始加载后工作完美,但在状态列中的单元格已更改后,过滤器似乎没有看到更新的数据,而是仍然过滤旧数据。


这是用于更新状态列中特定单元格的 js:注意:我们已经简化了示例以消除不是问题的代码。


var row = document.getElementById("user-id-" + userId);

statusColumn = row.children[4];

statusColumn.innerText = "inactive";

setTimeout(function(){ 

   $('.dataTable').DataTable().reload();

},2000);

我尝试使用 reload()、draw() 并使用 dataTable() 重新初始化整个表。没有函数允许表格使用新值正确过滤。过滤器确实有效,但它根据表中不再存在的旧值进行过滤。

下面是两个屏幕截图作为视觉示例。

  • 第一个屏幕截图:我正在查看新加载的表格并过滤状态“活动。

  • 然后我要将 Aaron McClendon(第一行)更改为“不活动”。

  • 第二张截图:我再次搜索状态“活动”。Aaron 不应再出现,因为他现在处于“不活跃”状态,但正如您所见,他确实出现在“活跃”状态过滤器中,但他的状态已更改为“不活跃”。

  • 过滤到其他状态并返回不会改变结果,开始正确过滤更新数据的唯一方法是重新加载页面。


拉风的咖菲猫
浏览 78回答 1
1回答

猛跑小猪

您需要使用 api 设置单元格的数据: https: //datatables.net/reference/api/cell().data()很难给出详细的答案,因为您没有发布任何 html 标记或足够的 javascript,但根据您提供的内容,它可能是这样的:var table = $('.dataTable').DataTable();var row = document.getElementById("user-id-" + userId);var statusColumn = row.children[4];var cell = table.cell( statusColumn );cell.data( "inactive" ).draw();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript