Javascript ag网格-展开/折叠树数据
我使用aggrid(free)和angular1,我已经得到了我的树数据,可以按需要显示,其中节点的子节点在它右边的列中。但是,我要做的是双击时折叠或展开节点。因为我的默认视图设置为展开,所以现在只关注如何使它们折叠。以下是我在$scope.gridOptions中给出的双击事件的代码:Javascript ag网格-展开/折叠树数据,javascript,ag-grid,Javascript,Ag Grid,我使用aggrid(free)和angular1,我已经得到了我的树数据,可以按需要显示,其中节点的子节点在它右边的列中。但是,我要做的是双击时折叠或展开节点。因为我的默认视图设置为展开,所以现在只关注如何使它们折叠。以下是我在$scope.gridOptions中给出的双击事件的代码: onCellDoubleClicked: function(event){ event.node.expanded = false;
onCellDoubleClicked: function(event){
event.node.expanded = false;
$scope.gridOptions.api.refreshView();
};
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;
}
}
我的假设是,将expanded属性更改为false将导致refreshView调用在子节点折叠的情况下重新渲染网格,但双击后视图保持不变
此外,gridOptions中的my getChildNodeDetails:
onCellDoubleClicked: function(event){
event.node.expanded = false;
$scope.gridOptions.api.refreshView();
};
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;
}
}
有没有关于我如何在不购买enterprise的情况下解决这个问题的想法?我知道,在企业中,您可以对行进行分组,这是内置的扩展/折叠功能。在我自己的应用程序中,我创建了一个模拟行分组功能的变通方法。它真正做的是来自网格的数据 此选项的一个缺点是,由于行实际上不在表中,因此与网格提供的实际企业功能不同,无法对未显示的数据进行任何列过滤或排序。但是,如果禁用了筛选和排序,则此选项完全可行 大概是这样的:
function toggleExpansion(index, data) {
if (insert) {
gridOptions.api.insertItemsAtIndex(index, data);
} else {
gridOptions.api.removeItems(data)
}
}
我的特定代码进行了更多的检查和其他与此问题无关的事情,但这就是我作为解决问题的方法所做的简单解释。我使用的是React,但您可能可以对Angular执行类似的操作:
function expandAll(expand) {
agGridRef.current.api.forEachNode((node) => {
node.setExpanded(expand);
});
}
其中agGridRef是对组件的引用:
<AgGridReact
ref={agGridRef}
.
.
.
</AgGridReact>
我想你是想重新创建而不是更正?。。。因为列分组是免费版本的一部分…@JarodMoser Correct,应该像您在行分组示例中看到的展开/折叠一样工作。