Grid Aggregates
The Grid component provides built-in aggregates for column values based on grouping and also a grand total row.
In this article:
Available Aggregate Functions
There are several available aggregate functions under the Telerik.Blazor.GridAggregateType enum:
AverageCountMaxMinSum
The Count aggregate can be applied to any type of field. The other aggregates can only be applied to numerical fields (e.g., int, decimal, double, etc.).
Where You Can Use Aggregates
You can use aggregates in the following templates:
GroupFooterTemplateof aGridColumn- a footer in the respective column that renders when the grid is grouped.GroupHeaderTemplateof aGridColumn- a header in the respective column that renders when the grid is grouped by that column. TheValuefield in the context carries the current group value.FooterTemplateof aGridColumn- a grand total row of footers for the entire grid.
Access The Aggregate Values
You can access the aggregate values through the template context:
- All templates expose the aggregate values for the current column.
- The
contextof theGroupHeaderTemplateand theGroupFooterTemplatehas anAggregateResultsproperty of a typeDictionary<string, GridGroupAggregateResult>. This dictionary allows you to access the aggregates for the other columns in the Grid.
How to Enable Aggregates
To enable aggregates:
- Under the
GridAggregatestag, define theGridAggregateentries to enable the aggregations per field you want to use. - If the Grid is bound to a dynamic object (Expando), set the
FieldTypeattribute of theGridAggregatetag (it is of typeType). - Set the grid's
Groupableproperty totrue.- If you will be using only
FooterTemplates - grouping is not required.
- If you will be using only
- Group the grid to see the effect on group-specific templates.
Example
Use Aggregates in the Telerik Blazor Grid
Notes
-
You should define only aggregates that you will use to avoid unnecessary calculations that may be noticeable on large data sets.
-
If you try to use an aggregate that is not defined, you will get a
nullvalue. -
If you try to use an aggregate that is not compatible with
Fieldtype, a runtime error will occur. -
If you update a field of a model the
Datacollection in the view-model, aggregates will not be updated automatically - the grid needs to re-evaluate that data first, and since this is an expensive operation a UI render does not trigger it. You can update the data collection yourself, or fetching it anew from the service (example here, see how the Create/Update/Delete events fetch data anew). -
If you bind the Grid via
OnReadevent, make sure to setAggregateResultsin theGridReadEventArgsevent argument object. Otherwise the Grid will calculate aggregates from the data on the current page only.
private async Task OnGridRead(GridReadEventArgs args)
{
DataSourceResult result = AllGridData.ToDataSourceResult(args.Request);
args.Data = result.Data;
args.Total = result.Total;
args.AggregateResults = result.AggregateResults;
}