在Angular-ui-grid中展开特定行

时间:2016-02-29 08:37:18

标签: angularjs angular-ui-grid

我使用angular-ui-grid 3.0.5和treeview扩展来显示树。正常加载数据,一切都按预期工作,除了expandRow无声地失败。

我的用例是这样的:假设我们有一个像>这样的路径b> c和我需要向用户显示预选的c。我知道选择是正确完成的,因为当我手动展开父行时,确实选择了子行。

我应该拨打expandAllRows,所有行都会被展开。但是,使用expandRow中对行a和b的引用调用gridOptions.data会导致无法执行任何操作:所有行都将保持折叠状态。

我是否有任何可能被忽视的预防措施,或者这是一个错误?

问题one mention在一个封闭的问题中可能与此有关但我遇到的问题,但我甚至不确定它是否相关,考虑到如何干评论/解决方案是。

在文档中没有使用expandRow的示例,但它包含在API和源代码中。

2 个答案:

答案 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));
    };

选择要扩展的行