MRT logoMaterial React Table

Column Grouping Example

Material React Table has a few different UI options and behaviors for displaying grouped columns. See the Column Grouping Guide to learn more.

Lazy Sub-Rows
Lazy Detail Panel
Editing Sub-Rows
More Examples
Utah (1)
Male (5)
DanikaRodriguez5731404
AlfonzoAbernathy4053374
AntwanZieme2156638
KathrynLangworth3925720
HayleePrice5759047
Alaska (2)
Male (4)
EloisaKohler3145801
KianHand5681062
MichaleCollier5975197
EldridgeStroman4259594
Female (4)
LoyceSchmidt2976295
AlveraBalistreri2579844
KaydenEmard3598252
DomingoBauch3635159
Arizona (1)
Male (1)
1-20 of 342

Source Code

1import { useMemo, useState } from 'react';
2import {
3 MaterialReactTable,
4 useMaterialReactTable,
5 type MRT_ColumnDef,
6} from 'material-react-table';
7import { data, type Person } from './makeData';
8import {
9 FormControl,
10 FormControlLabel,
11 FormLabel,
12 Radio,
13 RadioGroup,
14 Stack,
15} from '@mui/material';
16
17const Example = () => {
18 const columns = useMemo<MRT_ColumnDef<Person>[]>(
19 //column definitions...
48 );
49
50 //demo state
51 const [groupedColumnMode, setGroupedColumnMode] = useState<
52 false | 'remove' | 'reorder'
53 >('reorder'); //default is 'reorder
54
55 const table = useMaterialReactTable({
56 columns,
57 data,
58 enableGrouping: true,
59 groupedColumnMode,
60 initialState: {
61 expanded: true, //expand all groups by default
62 grouping: ['state', 'gender'], //an array of columns to group by by default (can be multiple)
63 pagination: { pageIndex: 0, pageSize: 20 },
64 },
65 muiTableContainerProps: { sx: { maxHeight: '800px' } },
66 });
67
68 return (
69 <Stack gap="1rem">
70 <DemoRadioGroup
71 groupedColumnMode={groupedColumnMode}
72 setGroupedColumnMode={setGroupedColumnMode}
73 />
74 <MaterialReactTable table={table} />
75 </Stack>
76 );
77};
78
79export default Example;
80
81//demo...
117

View Extra Storybook Examples