【问题标题】:How to Get Group count in AgGrid如何在 AgGrid 中获取组数
【发布时间】:2019-06-04 11:40:25
【问题描述】:

我已经为Aggrid 中的一列设置了rowgroup:true

我想显示它创建的组数并将其显示在页脚中。 我怎样才能做到这一点?

【问题讨论】:

    标签: ag-grid


    【解决方案1】:

    不幸的是,ag-grid API 没有提供任何方法来让您计算组内的行组数。然而,这可以很容易地使用 Vanilla JavaScript 计算,使用 JavaScript 的 Set。首先,我们从网格本身获取行节点数据,然后构造一个包含该特定属性的 Set(在此示例中,我们假设行组属性为“国家”)。由于我们只能为 Set 添加唯一值,因此可以确定 Set 的大小就是行组数。

    countCountries() {
      const rowData = [];
      const countrySet = new Set();
      this.gridApi.forEachNode(node => rowData.push(node.data));
      rowData.map(obj => {
        if (obj) {
          countrySet.add(obj.country);
        }
      });
      console.log(countrySet.size);
      return countrySet.size;
    }
    

    然后,我们可以通过实现pinned rows 简单地将计数添加到页脚。您必须为pinnedBottomRowData 指定输入属性绑定,以及为firstDataRendered 指定事件绑定,以便仅在呈现数据后计算国家/地区计数。

     <ag-grid-angular
      #agGrid
      style="width: 100%; height: 420px;"
      id="myGrid"
      class="ag-theme-balham"
      [columnDefs]="columnDefs"
      [defaultColDef]="defaultColDef"
      [animateRows]="true"
      [enableRangeSelection]="true"
      [rowData]="rowData"
      [pinnedBottomRowData]="pinnedBottomRowData"
      (firstDataRendered)="onFirstDataRendered($event)"
      (gridReady)="onGridReady($event)"
     ></ag-grid-angular>
    

    在你的 component.ts 本身上,

    onFirstDataRendered(event) {
      this.pinnedBottomRowData = this.createData();
    }
    
    createData() {
      const result = [];
      result.push({
        country:`count:${this.countCountries()}`,
      });
      return result;
    }
    

    我创建了一个demo 供您参考。这应该会推动您朝着正确的方向前进。

    【讨论】:

    • 谢谢你的回答,是否有任何javascript版本的代码而不是angular/。
    • @Sunilkumar 哦,对不起,我假设您正在使用诸如 Angular 之类的框架。 countCountries 等方法是纯原生 JavaScript。它应该工作。我可以知道你指的是我的代码的哪一部分吗?
    • ok..我使用 json 循环和过滤器使用 set() 来获取组数.. 并使用 jquery 更新页脚...
    猜你喜欢
    • 2019-08-29
    • 2020-03-13
    • 2019-12-22
    • 2020-04-25
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2018-10-12
    相关资源
    最近更新 更多