Data grid - Column groups
Group your columns.
Grouping columns allows you to have a multi-level hierarchy of columns in your header.
Define column groups
You can define column groups with the columnGroupingModel
prop.
This prop receives an array of column groups.
A column group is defined by at least two properties:
groupId
: a string used to identify the groupchildren
: an array containing the children of the group
The children
attribute can contain two types of objects:
- leafs with type
{ field: string }
, which add the column with the correspondingfield
to this group. - other column groups which allows you to have nested groups.
<DataGrid
columnGroupingModel={[
{
groupId: 'internal data',
children: [{ field: 'id' }],
},
{
groupId: 'character',
children: [
{
groupId: 'naming',
children: [{ field: 'lastName' }, { field: 'firstName' }],
},
{ field: 'age' },
],
},
]}
/>
<DataGridPro
experimentalFeatures={{ columnGrouping: true }}
rows={rows}
columns={columns}
checkboxSelection
disableSelectionOnClick
columnGroupingModel={columnGroupingModel}
/>
Customize column group
In addition to the required groupId
and children
, you can use the following optional properties to customize a column group:
headerName
: the string displayed as the column's name (instead ofgroupId
).description
: a text for the tooltip.headerClassName
: a CSS class for styling customization.renderHeaderGroup
: a function returning custom React component.
<DataGridPro
rows={rows}
columns={columns}
experimentalFeatures={{ columnGrouping: true }}
checkboxSelection
disableSelectionOnClick
columnGroupingModel={columnGroupingModel}
/>
Column reordering
By default, the columns that are part of a group cannot be dragged to outside their group.
You can customize this behavior on specific groups by setting freeReordering: true
in a column group object.
In the example below, the Full name
column group can be divided, but not other column groups.
<DataGridPro
rows={rows}
columns={columns}
experimentalFeatures={{ columnGrouping: true }}
checkboxSelection
disableSelectionOnClick
columnGroupingModel={columnGroupingModel}
/>