如何在ag-grid的onRowSelected事件中更新子网格复选框状态
在AG Grid主从网格(非分组模式)中同步父行与子网格复选框状态
当然可以实现,核心是通过父网格的onRowSelected事件获取对应子网格的API实例,再调用子网格的选择API来同步状态,具体步骤如下:
1. 获取子网格的API实例
在父网格的onRowSelected事件回调中,通过父行节点的id,调用父网格API的getDetailGridInfo(node.id)方法,就能拿到对应子网格的信息对象,从中提取子网格的API。
2. 同步子网格复选框状态
根据父行的选中状态,调用子网格API的选择方法:
- 父行选中时,调用
selectAll()选中子网格所有行 - 父行取消选中时,调用
deselectAll()取消子网格所有行选中
代码示例(React环境)
const onRowSelected = (event) => { const { node, api: parentGridApi } = event; // 获取当前父行对应的子网格信息 const detailGridInfo = parentGridApi.getDetailGridInfo(node.id); if (!detailGridInfo) return; const childGridApi = detailGridInfo.api; // 同步选中状态 if (node.selected) { childGridApi.selectAll(); } else { childGridApi.deselectAll(); } };
注意事项
- 确保子网格的列配置中开启了复选框选择:在子网格的列定义里添加
checkboxSelection: true - 如果需要自定义子行的选中规则(比如部分行不可选),可以遍历子网格数据,调用
childGridApi.setSelected(rowData, isSelected)来单独设置每行状态 - 若父网格存在批量选择(比如全选框),需要在
onSelectionChanged事件中做批量处理,遍历所有选中的父行,同步各自的子网格状态
内容的提问来源于stack exchange,提问作者sai
相关产品推荐
相关产品推荐

