为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉风的咖菲猫 2023-02-17 15:59:51
作为参考,我使用的是 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 不应再出现,因为他现在处于“不活跃”状态,但正如您所见,他确实出现在“活跃”状态过滤器中,但他的状态已更改为“不活跃”。过滤到其他状态并返回不会改变结果,开始正确过滤更新数据的唯一方法是重新加载页面。
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您需要使用 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();


查看完整回答
反对 回复 2023-02-17
  • 1 回答
  • 0 关注
  • 59 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信