如何在 ag-grid 表的页脚中启用或显示总行

新手上路,请多包涵

我正在使用 Ag-Grid 表,我想在表的页脚中显示总行。我如何通过使用 2 个表实现它的一些方法,第 1 个用于实际数据,第 2 个用于总计行。

它在普通不可滚动表上工作正常,但如果它是固定或可滚动表,则顶部表会滚动,但底部表会固定在同一个位置。

我想以相同的偏移量同时滚动两个表。

有关更多详细信息,请查看下面的屏幕截图,其中我有总底表。

普通表:

在此处输入图像描述

您可以在普通表中看到它完美地显示了总计。

在固定列表中,它没有按预期工作。

固定列表: 在此处输入图像描述

查看两个表的滚动条。

我想同时滚动两个表。

或者除了双表之外还有其他显示总计行的方法吗?

请指导我。

原文由 CodeChanger 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

最后,在对页脚总计行进行大量研发之后,我发现我们可以实施 PinnedBootomRow 来显示表格的总计。

所以我放弃了上面的想法,因为它给固定列带来了问题,而且管理 2 个表也很棘手。

感谢 AreYouSiries这里 提供了如此好的 plucker 演示

还要感谢 Ag-Grid 提供了这么好的带有 实例 的文档

我的 Total Row 自定义 Plucker 版本 在这里

按照上面的例子,我能够达到我的确切要求,现在它按预期工作。

让我添加排序步骤以实现 ag-grid 中的总行功能:

第一步 - 生成固定总行: 下面的函数将生成一个空的目标对象,其中包含网格中可用的所有列。

 generatePinnedBottomData(){
        // generate a row-data with null values
    let result = {};

    this.gridColumnApi.getAllGridColumns().forEach(item => {
        result[item.colId] = null;
    });
    return this.calculatePinnedBottomData(result);
}

第二步计算部分或所有列的总计: 您需要根据行数据计算总计,并在上面生成的目标行中设置值。

 calculatePinnedBottomData(target: any){
        //console.log(target);
        //**list of columns fo aggregation**
        let columnsWithAggregation = ['age']
        columnsWithAggregation.forEach(element => {
          console.log('element', element);
            this.gridApi.forEachNodeAfterFilter((rowNode: RowNode) => {
              //if(rowNode.index < 10){
                //console.log(rowNode);
              //}
                if (rowNode.data[element])
                    target[element] += Number(rowNode.data[element].toFixed(2));
            });
            if (target[element])
                target[element] = `Age Sum: ${target[element].toFixed(2)}`;
        })
        //console.log(target);
        return target;
    }

第三步也是最后一步: 调用上面的 generatePinnedBottomData() 函数,您可以从 API 或本地数据库获取网格数据。在上面的例子中,我们曾经从 onGridReady() 调用

onGridReady(params) {
    this.gridApi = params.api;
    this.gridColumnApi = params.columnApi;
    console.log(this.gridColumnApi.getAllGridColumns())
    this.http
      .get("https://raw.githubusercontent.com/ag-grid/ag-grid/master/packages/ag-grid-docs/src/olympicWinners.json")
      .subscribe(data => {
        this.rowData = data;
        setTimeout(()=>{
          let pinnedBottomData = this.generatePinnedBottomData();
        this.gridApi.setPinnedBottomRowData([pinnedBottomData]);
        }, 500)
      });
  }

您需要将生成的数据分配给网格。

就是这样,现在您可以看到固定在网格底部的总行。

最终输出: 在此处输入图像描述

希望我的帖子能帮助您实现网格中的总行。

原文由 CodeChanger 发布,翻译遵循 CC BY-SA 4.0 许可协议

Ag-Grid 有一个内置选项来创建一个组页脚,该组页脚使用聚合函数,如 sum、avg 等。在此处查看详细信息: https ://www.ag-grid.com/javascript-data-grid/grouping-footers/

原文由 taltaltal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题