Ag grid ag grid-getColumnGroup()方法在隐藏组中的所有列后返回null

Ag grid ag grid-getColumnGroup()方法在隐藏组中的所有列后返回null,ag-grid,ag-grid-ng2,Ag Grid,Ag Grid Ng2,在ag网格中,我有一个表,其结构如下: | Temperature | .... -----------|------|------|------|--------- Date | min | avg | max | .... -----------|------|------|------|--------- 2017-03-01 | 19.5 | 20.2 | 22.0 | .... 2017-03-02 | 18.8

在ag网格中,我有一个表,其结构如下:

            |   Temperature      |  ....
 -----------|------|------|------|---------
 Date       | min  | avg  | max  |  ....
 -----------|------|------|------|---------
 2017-03-01 | 19.5 | 20.2 | 22.0 |  ....
 2017-03-02 | 18.8 | 20.4 | 21.6 |  ....
toggleColumn(groupId: string) {
    let groupColumn = this.dataGridOptions.columnApi.getColumnGroup(groupId);
    let children = groupColumn.getChildren();

    for (let idx = 0; idx < children.length; idx++) {
        let colId: string = children[idx].getUniqueId();
        let colState = this.dataGridOptions.columnApi.getColumn(colId);
        let colVisibility = colState.isVisible();

        this.dataGridOptions.columnApi.setColumnVisible(colId, !colVisibility);
    }
}
我希望能够隐藏整个温度列组,我这样做:

            |   Temperature      |  ....
 -----------|------|------|------|---------
 Date       | min  | avg  | max  |  ....
 -----------|------|------|------|---------
 2017-03-01 | 19.5 | 20.2 | 22.0 |  ....
 2017-03-02 | 18.8 | 20.4 | 21.6 |  ....
toggleColumn(groupId: string) {
    let groupColumn = this.dataGridOptions.columnApi.getColumnGroup(groupId);
    let children = groupColumn.getChildren();

    for (let idx = 0; idx < children.length; idx++) {
        let colId: string = children[idx].getUniqueId();
        let colState = this.dataGridOptions.columnApi.getColumn(colId);
        let colVisibility = colState.isVisible();

        this.dataGridOptions.columnApi.setColumnVisible(colId, !colVisibility);
    }
}
  • 使用
    columnApi.getColumnGroup(groupId)
  • 使用
    getChildren()
  • 循环遍历所有元素并根据列的可见性状态隐藏/显示
隐藏部分工作正常,但是当我想再次显示列时,
getColumnGroup
方法返回一个
null
对象,我无法将列设置为再次可见。有什么想法吗

整个代码(Angular2组件的一部分)如下所示:

            |   Temperature      |  ....
 -----------|------|------|------|---------
 Date       | min  | avg  | max  |  ....
 -----------|------|------|------|---------
 2017-03-01 | 19.5 | 20.2 | 22.0 |  ....
 2017-03-02 | 18.8 | 20.4 | 21.6 |  ....
toggleColumn(groupId: string) {
    let groupColumn = this.dataGridOptions.columnApi.getColumnGroup(groupId);
    let children = groupColumn.getChildren();

    for (let idx = 0; idx < children.length; idx++) {
        let colId: string = children[idx].getUniqueId();
        let colState = this.dataGridOptions.columnApi.getColumn(colId);
        let colVisibility = colState.isVisible();

        this.dataGridOptions.columnApi.setColumnVisible(colId, !colVisibility);
    }
}
toggleColumn(groupId:string){
让groupColumn=this.dataGridOptions.columnApi.getColumnGroup(groupId);
让children=groupColumn.getChildren();
for(让idx=0;idx
您不能直接(解释如下)。 您可以做的是循环所有列,获取父项并检查它是否与groupId匹配

请看以下链接:

列始终存在,每个列定义只对应一列。这个 列则具有“可见”属性

这些组是暂时的,只有在需要时才存在(有 还有“OriginalColumnGroup”的概念,以跟踪 列在每个组中,但您无权访问它,它是 (内部)

[……]

因此,总而言之,列组仅在组显示时存在,并且 如果列相同,则同一组可以有多个组 分裂所以,这就是为什么列组不返回的原因 看得见