Vue Data GridCell Rendering
By default the grid renders values into the cells as strings. If you want something more complex you use a cell renderer.
The cell renderer for a column is set via colDef.cellRenderer
and can be any of the following types:
undefined
: Grid renders the value as a string.String
: The name of a registered Vue cell renderer component.Function
: A function that returns either an HTML string or DOM element for display.
The code snippet below demonstrates each of these method types.
<ag-grid-vue
:columnDefs="columnDefs"
/* other grid options ... */>
</ag-grid-vue>
this.columnDefs = [
// 1 - undefined - Grid renders the value as a string.
{
field: 'name',
cellRenderer: undefined,
},
// 2 - String - The name of a cell renderer registered with the grid.
{
field: 'age',
cellRenderer: 'agGroupCellRenderer',
},
// 3 - Function - A function that returns an HTML string or DOM element for display
{
field: 'year',
cellRenderer: params => {
// put the value in bold
return 'Value is <b>' + params.value + '</b>';
}
}
];
This remainder of this documentation page goes through the grid provided cell renderer's. To build your own cell renderer see the section Cell Rendering Components.
No Cell Renderer
If you have no requirements for custom cells, then you should use no cell renderer. Having no custom cell renderers will result in the fastest possible grid, as even the simplest cell renderer will result in some extra div's in the DOM
If you just want to do simple formatting of the data (eg currency or date formatting) then you can use colDef.valueFormatter
.
Cell Renderer Components
Cell renderer components can be referenced by string or directly by class. They can be Provided Cell Renderers (that come with the grid) or Custom Cell Renderers (built by you).
Many Renderers One Column
It is also possible to use different renderers for different rows in the same column. To configure this set colDef.cellRendererSelector
to a function that returns alternative values for cellRenderer
and cellRendererParams
.
The params
passed to cellRendererSelector
are the same as those passed to the Cell Renderer Component. Typically the selector will use this to check the rows contents and choose a renderer accordingly.
The result is an object with component
and params
to use instead of cellRenderer
and cellRendererParams
.
This following shows the Selector always returning back a Mood Cell Renderer:
cellRendererSelector: params => {
return {
component: 'GenderCellRenderer',
params: {values: ['Male', 'Female']}
};
}
However a selector only makes sense when a selection is made. The following demonstrates selecting between Mood and Gender Cell Renderers:
cellRendererSelector: params => {
const type = params.data.type;
if (type === 'gender') {
return {
component: 'GenderCellRenderer',
params: {values: ['Male', 'Female']}
};
}
if (type === 'mood') {
return {
component: 'MoodCellRenderer'
};
}
return undefined;
}
Here is a full example.
- The column 'Value' holds data of different types as shown in the column 'Type' (numbers/genders/moods).
colDef.cellRendererSelector
is a function that selects the renderer based on the row data.- The column 'Rendered Value' show the data rendered applying the component and params specified by
colDef.cellRendererSelector
Provided Cell Renderers
The grid comes with some provided cell renderers out of the box. These cell renderers cover some common complex cell rendering requirements.
-
Group Cell Renderer: For showing group details with expand & collapse functionality when using any of the Row Grouping, Master Detail or Tree Data.
-
Show Change Cell Renderers: For animating changes when data is changing.
-
Checkbox Cell Renderer: For displaying boolean values with a checkbox.
Checkbox Cell Renderer
Simple renderer for boolean values that uses the standard HTML checkbox input
. The renderer also allows editing.
If editing is enabled, then it is recommended to also use the Checkbox Cell Editor so that the UI matches when in edit mode.
Specified with agCheckboxCellRenderer
and configured with ICheckboxCellRendererParams
.
columnDefs: [
{
cellRenderer: 'agCheckboxCellRenderer',
cellRendererParams: {
disabled: true,
},
// ...other props
}
]
Note that if Row Selection is enabled, it is recommended to set suppressKeyboardEvent
on the column definition to prevent the Space key from triggering both row selection and toggling the checkbox. This is shown in the example above.