GridControl.CustomSummary Event
Allows you to calculate summary values manually.
Namespace: DevExpress.WinUI.Grid
Assembly: DevExpress.WinUI.Grid.v21.2.dll
Declaration
Event Data
The CustomSummary event's data class is CustomSummaryEventArgs. The following properties provide information specific to this event:
Property | Description |
---|---|
FieldValue | Gets the processed field value. |
GroupLevel | Gets the nested level of the group whose summary value is being calculated. |
GroupRowHandle | Gets a value identifying the group row whose child data rows are involved in summary calculation. |
IsGroupSummary | Gets whether a group summary value is being calculated. |
IsTotalSummary | Gets whether a total summary value is being calculated. |
Item | Gets a summary item whose value is being calculated. |
Mode | |
Row | Gets the currently processed row. |
RowHandle | Gets the handle of the processed row. |
SummaryProcess | Gets a value indicating calculation stage. |
TotalValue | Gets or sets the total summary value. |
TotalValueReady | Gets or sets whether the Calculation stage of the custom summary calculation process should be skipped. |
The event data class exposes the following methods:
Method | Description |
---|---|
GetGroupSummary(Int32, Object) | Returns the value of the specified group summary for the specified group row. |
GetValue(String) | Returns the value in the specified field |
Remarks
Total summaries provide five predefined aggregate functions (COUNT, MAX, MIN, SUM and AVG). If you want to calculate summaries using custom rules, handle the CustomSummary event. This event enables you to implement custom aggregate functions or calculate summary values, using a custom algorithm.
Example
The following code sample shows how to use a custom summary to count the total value of selected rows.
<Window ...
xmlns:dxg="using:DevExpress.WinUI.Grid">
<dxg:GridControl x:Name="grid"
ItemsSource="{x:Bind ViewModel.Source}"
AutoGenerateColumns="True"
SelectionMode="Row"
ShowTotalSummary="True"
CustomSummary="grid_CustomSummary"
SelectionChanged="grid_SelectionChanged">
<dxg:GridControl.TotalSummary>
<dxg:GridSummaryItem FieldName="UnitPrice" SummaryType="Custom"
DisplayFormat="Total price (selected rows): {0}"/>
</dxg:GridControl.TotalSummary>
</dxg:GridControl>
</Window>
using DevExpress.Data;
using DevExpress.WinUI.Grid;
// ...
public sealed partial class MainWindow : Window {
public MainViewModel ViewModel { get; } = new MainViewModel();
public MainWindow() {
this.InitializeComponent();
}
double sum;
void grid_CustomSummary(object sender, CustomSummaryEventArgs e) {
if(e.SummaryProcess == CustomSummaryProcess.Start) {
sum = 0;
} else if(e.SummaryProcess == CustomSummaryProcess.Calculate) {
if(grid.IsRowSelected(e.RowHandle))
sum += (double)e.FieldValue;
} else {
e.TotalValue = sum;
}
}
void grid_SelectionChanged(object sender, GridSelectionChangedEventArgs e) {
grid.UpdateTotalSummary();
}
}
For more information, refer to the following help topic: Custom Summary.