AdaptTable for Ant Design

Row grouping in Ant Design

Pass groupBy and rows fold into Ant Design group headers with counts. Pass a list and each key nests inside the one before it, however deep the nesting goes.

groupAggregates adds per-group subtotals from the same mapper summaryRow uses, so every header totals its whole subtree and groupFooters closes each group with the same numbers.

Collapse state travels in the URL, and export writes the grouped sheet — outline levels and all — rather than the flat rows underneath it.

Group headers and footers are records spliced into antd's own dataSource and spanned through its onCell hook, so grouping happens inside antd's Table rather than around it; the summary row is antd's Table.Summary.

The code

import { DataTable } from "@adapttable/antd";

export function People({ rows, columns }) {
  return (
    <DataTable
      data={rows}
      columns={columns}
      rowKey={(row) => row.id}
      groupBy={["team", "status"]}
      groupFooters
      groupAggregates={(group) => ({
        budget: group.reduce(
          (sum, row) => sum + row.budget,
          0
        ),
      })}
    />
  );
}

Install

pnpm add @adapttable/antd @adapttable/core antd

The same feature in the other kits

More Ant Design features

Reference: row-grouping. More of this kit: AdaptTable for Ant Design, or the live demo.