Ag Grid技术问题:如何取消选中已被过滤隐藏的行
解决Ag Grid Server-Side Row Model过滤后取消隐藏行选中的问题
1. 判断行是否被过滤隐藏的方法
完全可以通过行节点的rowNode.filtered属性判断该行是否被当前过滤规则隐藏:
- 当属性值为
true时,该行已被过滤隐藏 - 当属性值为
false时,该行在当前过滤结果中可见
2. 实现取消选中隐藏行的具体操作
在过滤条件变化的时机(比如filterChanged事件触发时),执行以下步骤即可:
- 调用
gridApi.getSelectedNodes()获取所有处于选中状态的行节点 - 遍历这些节点,检查
filtered属性 - 对
filtered为true的节点,调用gridApi.deselectNode(node)取消其选中状态
示例代码:
// 监听过滤变化事件 gridApi.addEventListener('filterChanged', () => { const selectedNodes = gridApi.getSelectedNodes(); selectedNodes.forEach(node => { if (node.filtered) { gridApi.deselectNode(node); } }); });
3. 注意事项
- Server-Side Row Model模式下,只有已加载到客户端的行节点会包含
filtered属性,未加载的行不会出现在选中集合中,无需额外处理 - 若要区分过滤隐藏和列隐藏,可额外检查
rowNode.hidden属性,二者属于不同的行隐藏状态
内容的提问来源于stack exchange,提问作者Ryan Pierce Williams
相关产品推荐
相关产品推荐

