Ag-Grid树数据加载时展开指定父节点失败:父节点未定义
Ag-Grid自动展开指定分组父行解决方案
问题根源
你遇到的情况是:生成的Red、Blue这类父行是分组虚拟节点,并非原始数据中的条目,所以这类节点的node.data为undefined,你之前的代码过滤掉了node.data != undefined的节点,自然看不到父分组节点。
两种可行解决方法
方法一:直接通过分组路径获取父节点(推荐)
使用Ag-Grid提供的getGroupNodeFromPath方法,直接通过分组层级路径定位目标父节点,然后调用展开方法:
onFirstDataRendered(params) { // 传入分组路径,一级分组直接传父组名称数组即可 const targetGroupNode = params.gridApi.getGroupNodeFromPath(['Red']); if (targetGroupNode) { // 执行展开操作 targetGroupNode.setExpanded(true); } }
- 若为多级分组,路径数组依次填入各层级分组值即可,比如二级分组路径为
['Red', 'Magenta']
方法二:遍历所有分组节点匹配目标
遍历所有节点,通过node.group属性识别分组节点,再匹配分组key展开:
onFirstDataRendered(params) { params.gridApi.forEachNode(node => { // 判断当前节点是否为分组节点 if (node.group) { // 匹配目标父组名称(Red) if (node.key === 'Red') { node.setExpanded(true); } } }); }
- 分组节点的
node.key对应分组字段的值,也就是你看到的Red、Blue这类父组名称
补充说明
确保你的网格已正确配置分组规则,比如在columnDefs中设置了分组字段:
columnDefs = [ { field: 'parentColor', rowGroup: true, hide: true }, // 按parentColor分组并隐藏该列 { field: 'colorName' } ];
内容的提问来源于stack exchange,提问作者Catherine S.
相关产品推荐
相关产品推荐

