ag-grid - 展开/折叠树数据

wit*_*ion 5 javascript ag-grid

我正在将 ag-grid (免费)与 Angular 1 一起使用,并且我已经根据需要显示了树数据,其中节点的子节点位于其右侧的列中。但是,我想要做的是双击时折叠或展开节点。现在只专注于让它们折叠,因为我的默认视图设置为展开。这是我的双击事件的代码,在 $scope.gridOptions 中给出:

onCellDoubleClicked: function(event){ 
                                      event.node.expanded = false;
                                      $scope.gridOptions.api.refreshView();
                                     };
Run Code Online (Sandbox Code Playgroud)

我的假设是,将 Expanded 属性更改为 false 会导致刷新视图调用重新渲染子节点折叠的网格,但双击后视图保持不变。

另外,我的 getChildNodeDetails 在 gridOptions 中:

getNodeChildDetails: function(obj){
                if (obj.children){
                    var nodeType = obj.breakdownCol;
                    return {
                        group: true,
                        expanded: obj.expanded || true,
                        children: obj.children,
                        field: 'name',
                        key: obj[nodeType]
                    }
                } else {
                    return null;
                }
            }
Run Code Online (Sandbox Code Playgroud)

关于如何在不购买企业的情况下解决此问题的任何想法?我知道在企业中您可以对行进行分组,这带有内置的展开/折叠功能。

Jar*_*ser 2

在我自己的应用程序中,我创建了一个模拟行分组功能的解决方案。它真正做的是从网格中添加和删除数据。

此选项的一个缺点是,由于行实际上不在表中,因此实际上无法对未显示的数据进行列上的任何过滤或排序,这与网格提供的实际企业功能不同。但是,如果您禁用了过滤和排序,那么此选项是完全可行的。

像这样的东西:

function toggleExpansion(index, data) {
    if (insert) {
        gridOptions.api.insertItemsAtIndex(index, data);
    } else {
        gridOptions.api.removeItems(data)
    }
}
Run Code Online (Sandbox Code Playgroud)

我的具体代码涉及更多检查和与这个问题无关的其他事情,但这是我正在做的工作的简单解释。