如何实现igHierarchicalGrid第三层级行的程序化选择?
解决Infragistics igHierarchicalGrid第三层级行选择问题
我明白你现在卡在第三层级行选择这一步了——已经搞定二级(Pizza)的行选择,但三级的操作没成功对吧?咱们一步步来拆解问题,找到解决方案。
问题根源
你之前用grid.igHierarchicalGrid("allChildren")获取的是当前展开行的直接子网格(也就是二级网格),但三级网格是二级网格的子项,所以需要先展开二级网格的行,再从二级网格里获取它的子网格(三级),才能进行选择操作。
完整解决方案代码
下面是调整后的代码,我加上了详细注释,你可以根据自己的实际配置修改:
// 1. 获取根层级网格实例 var parentGrid = grid.igHierarchicalGrid("rootWidget"); // 2. 选择并展开根网格的第一行(对应二级网格的父行) var rootRow = parentGrid.rowAt(0); grid.igHierarchicalGrid("expand", rootRow); // 3. 获取所有已展开的二级子网格 var secondLevelGrids = grid.igHierarchicalGrid("allChildren"); // 4. 遍历每个二级网格,处理三级内容 $(secondLevelGrids).each(function(index, secondGrid) { // 先展开二级网格的目标行(这里选第一行,你可以根据需求调整索引) var secondGridWidget = $(secondGrid).igHierarchicalGrid("rootWidget"); var secondRow = secondGridWidget.rowAt(0); $(secondGrid).igHierarchicalGrid("expand", secondRow); // 5. 获取当前二级网格下的所有三级子网格 var thirdLevelGrids = $(secondGrid).igHierarchicalGrid("allChildren"); // 6. 遍历每个三级网格,定位并选择目标行 $(thirdLevelGrids).each(function(thirdIndex, thirdGrid) { // 假设你要选第三行(索引从0开始,所以是2) var targetRowIndex = 2; var thirdGridWidget = $(thirdGrid).igHierarchicalGrid("rootWidget"); var targetRow = thirdGridWidget.rowAt(targetRowIndex); // 可选验证:确保该行包含ProductNumber列(根据你的列键调整data-key值) var productNumberCell = $(targetRow).find("td[data-key='ProductNumber']"); if (productNumberCell.length > 0) { // 执行行选择操作 $(thirdGrid).igGridSelection("selectRow", targetRowIndex); } }); });
关键注意点
- 展开顺序很重要:必须先展开父级行,子网格才会被渲染,
allChildren才能获取到对应的子网格实例 - 行索引的对应关系:Infragistics的行索引是从0开始的,所以“第三行”对应的索引是
2,如果你的需求是按内容定位(比如找到包含特定ProductNumber值的行),可以遍历三级网格的所有行,通过单元格内容判断后再选择 - 列键匹配:代码里的
data-key='ProductNumber'要和你网格列配置中的key属性完全一致,否则会找不到目标单元格
内容的提问来源于stack exchange,提问作者Hassam
相关产品推荐
相关产品推荐

