AG-Grid:已选中且禁用的行在getSelectedNodes()中仍显示可选
AG Grid 行选中与
selectable属性疑问 我按照AG Grid文档实现了行选中并禁用的渲染效果,显示正常,但调用getSelectedNodes()时,发现那些被禁用的节点的selectable属性实际仍返回true,和我预期的false不符。请问这是Bug还是操作有误?我希望能通过筛选selectable属性仅获取用户手动选中的节点。
这不是Bug,是对selectable属性的作用理解存在偏差:
selectable是用来控制节点是否允许用户交互选中/取消选中的配置,它不会自动修改节点选中状态的属性值。当设置节点不可选时,只是禁用了用户的交互操作,但节点本身的selectable初始值不会被AG Grid自动变更。
要实现筛选用户手动选中节点的需求,可以按以下方式处理:
- 给那些预设选中且禁用的节点添加自定义标识(比如
isPreSelected: true) - 调用
getSelectedNodes()后,通过该标识过滤:
const allSelectedNodes = gridApi.getSelectedNodes(); const userSelectedNodes = allSelectedNodes.filter(node => !node.data.isPreSelected);
或者,如果你是通过API强制设置选中状态的,可在设置时记录这些强制选中的节点,后续筛选时排除即可。
另外,确认你正确配置了不可选逻辑,通常是在列定义的checkboxSelection回调中设置:
columnDefs: [ { headerName: '选择', checkboxSelection: params => !params.data.isDisabled, // 其他列配置 } ]
内容的提问来源于stack exchange,提问作者nblsrdr
相关产品推荐
相关产品推荐

