1

在 ag-grid 我有一个结构如下的表:

            |   Temperature      |  ....
 -----------|------|------|------|---------
 Date       | min  | avg  | max  |  ....
 -----------|------|------|------|---------
 2017-03-01 | 19.5 | 20.2 | 22.0 |  ....
 2017-03-02 | 18.8 | 20.4 | 21.6 |  ....

我希望能够隐藏整个温度列组,我这样做:

  • 按名称获取列组columnApi.getColumnGroup(groupId)
  • 获取列子项getChildren()
  • 循环遍历所有元素并根据列可见性状态隐藏/显示

隐藏部分工作正常,但是当我想再次显示列时,该getColumnGroup方法返回一个null对象,我无法将列设置为再次可见。有任何想法吗?

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

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);
    }
}
4

1 回答 1

1

你不能直接(下面的解释)。您可以做的是遍历所有列并获取父级并检查它是否与 groupId 匹配。

看看以下链接: https ://github.com/ag-grid/ag-grid/issues/696

列始终存在,每一列 def 恰好有一列。然后该列具有“可见”属性。

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

[...]

https://www.ag-grid.com/angular-grid-master-slave/index.php

因此,总而言之,列组仅在显示组时才存在,如果列被拆分,则同一组可以有多个组。所以,这就是列组不可见时不返回的原因!

于 2017-08-15T17:49:14.657 回答