根据AG Grid文档,在打开行组以及关闭行组时会触发RowGroupOpened。我正在使用Angular 7和AG Grid Enterprise Version 20(评估阶段)。
我需要区分这两个事件,以使expandedGroupIds数组保持最新。该数组应仅包含当前打开的组。
在执行服务器端排序后,我正在使用此数组来恢复先前的组状态(根据此文档:https://www.ag-grid.com/javascript-grid-server-side-model-grouping/#preserving-group-state)
这是我的事件处理程序代码。问题是在用户单击列进行排序后也会触发该事件。在这种情况下,元素会无意中从数组中删除,下一次排序会导致所有行组被关闭。
onRowGroupOpened(event) {
if(event.data.id) {
if (this.gridDataSource.hasExpandedGroupId(event.data.id)) {
this.gridDataSource.removeExpandedGroupId(event.data.id);
} else {
this.gridDataSource.addExpandedGroupId(event.data.id);
}
}}
谢谢您的帮助。亲切的问候Patrick
我没有使用服务器端模型,但不认为实现会有所不同。您可以使用expanded
属性来区分组的开始或结束事件。这是一个例子 -
onRowGroupOpened(params) {
if(params.node.expanded) {
// node was expanded, do your logic
this.gridDataSource.addExpandedGroupId(params.data.id);
} else {
// node was collapsed, so remove if present
if (this.gridDataSource.hasExpandedGroupId(params.data.id)) {
this.gridDataSource.removeExpandedGroupId(params.data.id);
}
}
}
这样,您可以维护扩展节点ID的列表