PivotGridControl.CustomSummary Event
Enables summary values to be calculated manually.
Namespace: DevExpress.XtraPivotGrid
Assembly: DevExpress.XtraPivotGrid.v18.1.dll
Declaration
Event Data
The CustomSummary event's data class is PivotGridCustomSummaryEventArgs. The following properties provide information specific to this event:
Property | Description |
---|---|
ColumnField | Gets the column field that corresponds to the current cell. Inherited from PivotGridCustomSummaryEventArgsBase<T>. |
ColumnFieldValue | Gets the value of the column field that corresponds to the current cell. Inherited from PivotGridCustomSummaryEventArgsBase<T>. |
CustomValue | Gets or sets a custom summary value. Inherited from PivotGridCustomSummaryEventArgsBase<T>. |
DataField | Gets the data field against which the summary is calculated. Inherited from PivotGridCustomSummaryEventArgsBase<T>. |
FieldName | Gets the name of the data field against which the summary is calculated. Inherited from PivotGridCustomSummaryEventArgsBase<T>. |
RowField | Gets the row field that corresponds to the current cell. Inherited from PivotGridCustomSummaryEventArgsBase<T>. |
RowFieldValue | Gets the value of the row field that corresponds to the current cell. Inherited from PivotGridCustomSummaryEventArgsBase<T>. |
SummaryValue | Gets an object that contains the values of the predefined summaries which are calculated for the current cell. Inherited from PivotGridCustomSummaryEventArgsBase<T>. |
The event data class exposes the following methods:
Method | Description |
---|---|
CreateDrillDownDataSource() | Returns a list of the records that are associated with the cell currently being processed. Inherited from PivotGridCustomSummaryEventArgsBase<T>. |
Remarks
The Pivot Grid Control calculates summaries against data fields. A field’s PivotGridFieldBase.SummaryType property specifies the type of summary function. The control automatically calculates all the predefined summary functions (see the PivotSummaryType topic for a list of the available functions) and it allows custom summaries to be calculated manually via the CustomSummary event.
To calculate a custom summary for a specific data field, set its PivotGridFieldBase.SummaryType property to PivotSummaryType.Custom. In this case, the CustomSummary event will fire for each cell that corresponds to this data field.
For instance, this event enables a custom summary to be calculated against multiple fields, particular records, etc. Use the PivotGridCustomSummaryEventArgsBase<T>.CreateDrillDownDataSource method to get a list of the records that correspond to the current cell. This list can then be traversed to calculate a summary in a custom manner. The custom summary value should be assigned to the PivotGridCustomSummaryEventArgsBase<T>.CustomValue parameter.
For each cell, the Pivot Grid Control calculates all the predefined summaries (AVERAGE, MIN, MAX, SUM, etc). The calculated values can be accessed using the PivotGridCustomSummaryEventArgsBase<T>.SummaryValue property. You can use them in custom summary calculations.
Example
The following example shows how to calculate a custom summary.
Assume that the Pivot Grid Control is bound to a “SalesPerson” view. A field which displays the ratio of orders over $500 is to be added.
In this example, the custom summary is calculated against the “Extended Price” field. It’s PivotGridCustomTotalBase.SummaryType property is set to PivotSummaryType.Custom and the caption to “Percentage of Orders over $500”. The PivotGridControl.CustomSummary event is only handled to count those records whose total sum exceeds minSum. The ratio of these records to all the records is a custom summary value and therefore is assigned to the PivotGridCustomSummaryEventArgsBase<T>.CustomValue parameter.
The following image shows the result of the custom summary calculation:
using DevExpress.XtraPivotGrid;
fieldExtendedPrice.Caption = "Percentage of Orders over $500";
// Enable a custom summary calculation for the Extended Price field.
fieldExtendedPrice.SummaryType = DevExpress.Data.PivotGrid.PivotSummaryType.Custom;
// Specify the settings used to format values.
fieldExtendedPrice.CellFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
fieldExtendedPrice.CellFormat.FormatString = "p";
int minSum = 500;
private void pivotGridControl1_CustomSummary(object sender,
PivotGridCustomSummaryEventArgs e) {
if(e.DataField != fieldExtendedPrice) return;
// A variable which counts the number of orders whose sum exceeds $500.
int order500Count = 0;
// Get the record set corresponding to the current cell.
PivotDrillDownDataSource ds = e.CreateDrillDownDataSource();
// Iterate through the records and count the orders.
for(int i = 0; i < ds.RowCount; i++) {
PivotDrillDownDataRow row = ds[i];
// Get the order's total sum.
decimal orderSum = (decimal)row[fieldExtendedPrice];
if(orderSum >= minSum) order500Count ++;
}
// Calculate the percentage.
if(ds.RowCount > 0) {
e.CustomValue = (decimal)order500Count/ds.RowCount;
}
}
Related GitHub Examples
The following code snippets (auto-collected from DevExpress Examples) contain references to the CustomSummary event.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.