Back to Devexpress

Summary Display Types

wpf-8053-controls-and-libraries-pivot-grid-data-shaping-aggregation-summaries-summary-display-types.md

latest7.4 KB
Original Source

Summary Display Types

  • Oct 15, 2023
  • 3 minutes to read

Summaries in cells are calculated according to the SummaryType property of data fields.

Pivot Grid can show how cell values correlate to summary values in other cells instead of displaying raw summary results. For instance, the Pivot Grid allows you to display the percentage of totals and grand totals, or the absolute or percentage difference between current and preceding cells.

Optimized Mode

You can implement the summary display type functionality through window calculations in Optimized mode. For this use the following classes:

Refer to the following topic for more information: Bind Pivot Grid Fields to Window Calculations.

You can also implement custom summaries to build an expression that executes complex calculations for a Pivot Grid field.

Example

View Example: PivotGrid for WPF - How to Change SummaryDisplayType in the Context Menu

The following code snippet shows how to calculate different types of a percentage of all values for the Value field:

cs
static void itemClickEventHandler(object sender, ItemClickEventArgs e) {
    BarItem barItem = sender as BarItem;
    object[] barItemInfo = (object[])barItem.Tag;
    PivotGridField field = (PivotGridField)barItemInfo[0];
    FieldSummaryDisplayType newValue = (FieldSummaryDisplayType)barItemInfo[2];
    DataSourceColumnBinding sourceBinding = new DataSourceColumnBinding("Value");
    switch(newValue){
    // ...
        case FieldSummaryDisplayType.PercentOfColumn:
            field.DataBinding = new PercentOfTotalBinding(
                sourceBinding,
                CalculationPartitioningCriteria.ColumnValueAndRowParentValue);
            break;
        case FieldSummaryDisplayType.PercentOfRow:
            field.DataBinding = new PercentOfTotalBinding(
                sourceBinding,
                CalculationPartitioningCriteria.RowValueAndColumnParentValue);
            break;
        case FieldSummaryDisplayType.PercentOfColumnGrandTotal:
            field.DataBinding = new PercentOfTotalBinding(
                sourceBinding,
                CalculationPartitioningCriteria.ColumnValue);
            break;
        case FieldSummaryDisplayType.PercentOfRowGrandTotal:
            field.DataBinding = new PercentOfTotalBinding(
                sourceBinding,
                CalculationPartitioningCriteria.RowValue);
            break;
        case FieldSummaryDisplayType.PercentOfGrandTotal:
            field.DataBinding = new PercentOfTotalBinding(
                sourceBinding,
                CalculationPartitioningCriteria.None);
            break;
            // ...
    }
    field.Tag = newValue;
    (field.Parent as PivotGridControl).ReloadData();
}
#endregion CommonMethods
vb
Private Shared Sub itemClickEventHandler(ByVal sender As Object, ByVal e As ItemClickEventArgs)
            Dim barItem As BarItem = TryCast(sender, BarItem)
            Dim barItemInfo() As Object = CType(barItem.Tag, Object())
            Dim field As PivotGridField = DirectCast(barItemInfo(0), PivotGridField)
            Dim newValue As FieldSummaryDisplayType = DirectCast(barItemInfo(2), FieldSummaryDisplayType)
            Dim sourceBinding As New DataSourceColumnBinding("Value")
            Select Case newValue
            ' ...
                Case FieldSummaryDisplayType.PercentOfColumn
                    field.DataBinding = New PercentOfTotalBinding(sourceBinding, CalculationPartitioningCriteria.ColumnValueAndRowParentValue)
                Case FieldSummaryDisplayType.PercentOfRow
                    field.DataBinding = New PercentOfTotalBinding(sourceBinding, CalculationPartitioningCriteria.RowValueAndColumnParentValue)
                Case FieldSummaryDisplayType.PercentOfColumnGrandTotal
                    field.DataBinding = New PercentOfTotalBinding(sourceBinding, CalculationPartitioningCriteria.ColumnValue)
                Case FieldSummaryDisplayType.PercentOfRowGrandTotal
                    field.DataBinding = New PercentOfTotalBinding(sourceBinding, CalculationPartitioningCriteria.RowValue)
                Case FieldSummaryDisplayType.PercentOfGrandTotal
                    field.DataBinding = New PercentOfTotalBinding(sourceBinding, CalculationPartitioningCriteria.None)
                Case FieldSummaryDisplayType.RankInColumnLargestToSmallest
                    field.DataBinding = New RankBinding(sourceBinding, CalculationPartitioningCriteria.ColumnValue, RankType.Dense, FieldSortOrder.Descending)
                Case FieldSummaryDisplayType.RankInColumnSmallestToLargest
                    field.DataBinding = New RankBinding(sourceBinding, CalculationPartitioningCriteria.ColumnValue, RankType.Dense, FieldSortOrder.Ascending)
                Case FieldSummaryDisplayType.RankInRowLargestToSmallest
                    field.DataBinding = New RankBinding(sourceBinding, CalculationPartitioningCriteria.RowValue, RankType.Dense, FieldSortOrder.Descending)
                Case FieldSummaryDisplayType.RankInRowSmallestToLargest
                    field.DataBinding = New RankBinding(sourceBinding, CalculationPartitioningCriteria.ColumnValue, RankType.Dense, FieldSortOrder.Ascending)
                Case Else
                    field.DataBinding = sourceBinding
            End Select
            field.Tag = newValue
            TryCast(field.Parent, PivotGridControl).ReloadData()
        End Sub

Legacy and LegacyOptimized modes

A data field’s PivotGridField.SummaryDisplayType property allows you to choose one of the predefined summary display types. The default value of this property (FieldSummaryDisplayType.Default) indicates that summary values are displayed as is.

More Documentation

See the following topics for more information about predefined summary display types: