我使用angular-ui-grid 3.0.5和treeview扩展来显示树。正常加载数据,一切都按预期工作,除了expandRow
无声地失败。
我的用例是这样的:假设我们有一个像>这样的路径b> c和我需要向用户显示预选的c。我知道选择是正确完成的,因为当我手动展开父行时,确实选择了子行。
我应该拨打expandAllRows
,所有行都会被展开。但是,使用expandRow
中对行a和b的引用调用gridOptions.data
会导致无法执行任何操作:所有行都将保持折叠状态。
我是否有任何可能被忽视的预防措施,或者这是一个错误?
问题one mention在一个封闭的问题中可能与此有关但我遇到的问题,但我甚至不确定它是否相关,考虑到如何干评论/解决方案是。
在文档中没有使用expandRow
的示例,但它包含在API和源代码中。
答案 0 :(得分:0)
文档http://ui-grid.info/docs/#/api/ui.grid.treeBase.api:PublicApi中提到的gridRow
对象不是您放入数据数组的元素(虽然这似乎没有在任何地方解释)。
函数期望的是网格在构建树时创建的对象,您可以通过遍历网格treeBase.tree
数组来访问它们。这似乎只有在网格构建了树时才有效,因此在填写数据时它不能直接使用,这就是为什么注册DataChangeCallback有助于https://github.com/angular-ui/ui-grid/issues/3051
// expand the top-level rows
// https://github.com/angular-ui/ui-grid/issues/3051
ctrl.gridApi.grid.registerDataChangeCallback(function() {
if (ctrl.gridApi.grid.treeBase.tree instanceof Array) {
angular.forEach(ctrl.gridApi.grid.treeBase.tree, function(node) {
if (node.row.treeLevel == 0) {
ctrl.gridApi.treeBase.expandRow(node.row);
}
});
}
});
答案 1 :(得分:0)
self.onContentReady = function (e) {
e.component.expandRow(e.component.getKeyByRowIndex(0));
e.component.expandRow(e.component.getKeyByRowIndex(1));
};
选择要扩展的行