AG-GRID 只删除前 27 个节点
Posted
技术标签:
【中文标题】AG-GRID 只删除前 27 个节点【英文标题】:AG-GRID only deleting the first 27 nodes 【发布时间】:2021-11-04 16:07:13 【问题描述】:我的网格中有大约 2500 行,其中大约 400 是选定的节点。 所以我遍历所有节点,如果它们的 ID 在这 400 条记录的 ID 中,我希望它们被删除。 所以我写了这个:
allItems.forEach(node =>
if(selectedItems.includes(node.data.id))
node.setSelected(false);
)
它可以工作,但一次只删除 27 行,而不是删除所有 400 行。所以我必须再点击一次按钮,它会删除接下来的 27 条记录等。
为什么会这样?如何更改它以一次删除所有这 400 行?
【问题讨论】:
请发布您的数据。 【参考方案1】:您的示例代码非常有限。但是为什么不用网格内部的api来查询选中的节点呢?
this.gridApi.getSelectedNodes().forEach(node =>
node.setSelected(false);
);
【讨论】:
谢谢,我也这样做了。奇怪的是,如果我说 getSelectedNodes 中有多少项,它确实返回正确的 400 个节点,但是当它想在它们上应用 setSelected 时,它仍然只适用于前 27 个节点左右! 我现在也证明了这一点。为了测试,我增加了网格的高度。因此,这一次无需向下滚动即可显示更多行。所以当我调用我的删除方法时,它删除了超过 20 个之前删除的内容。所以这意味着它必须对网格做一些优化,也许它会保留某种对用户可见的行的缓冲区。【参考方案2】:试试这个:-
选择所有行并删除所有选定的行:-
deletedAllSelectedRows()
this.gridApi.selectAll(); //select all rows
const sel = this.gridApi.getSelectedRows();
this.gridApi.applyTransaction(remove: sel);
注意:-
applyTransaction
需要版本 23.1.0。对于较低 版本使用this.gridApi.updateRowData(remove: sel)
【讨论】:
以上是关于AG-GRID 只删除前 27 个节点的主要内容,如果未能解决你的问题,请参考以下文章