The DXPivotGrid control lets you calculate automatic or custom Totals against data fields. These totals are displayed as an additional column(s) for each value of an outer Column Field and as an additional row for each value of an outer Row Field.
For each data field a single automatic total is calculated, and its summary function is determined by the field's SummaryType property.
The number of automatic totals displayed for each value of an outer field matches the number of data fields.
Custom totals allow you to calculate multiple totals against each data field. A custom total is represented by the PivotGridCustomTotal class and its PivotGridCustomTotal.SummaryType property identifies the summary function type used to calculate the total.
To display custom totals instead of the automatic totals for the values of an outer column or row field, you should do the following:
If the TotalsVisibility property of an outer column or row field is set to FieldTotalsVisibility.None neither an automatic nor custom total is displayed for the values of this field.

Example
The following example demonstrates how to add custom Totals for a particular pivot grid field.
In this example, four different totals are added for the Category Name row field: Average, Sum, Min and Max. For this, they should be added to the CustomTotals property and the TotalsVisibility property should be set to FieldTotalsVisibility.CustomTotals.
MainWindow.xaml |
<Window x:Class="HowToBindToMDB.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid>
<dxpg:PivotGridControl HorizontalAlignment="Left" Name="pivotGridControl1"
VerticalAlignment="Top" RowTotalsLocation="Far">
<dxpg:PivotGridControl.Fields>
<dxpg:PivotGridField Name="fieldCategoryName" FieldName="CategoryName"
Area="RowArea" Caption="Category"
TotalsVisibility="CustomTotals">
<dxpg:PivotGridField.CustomTotals>
<dxpg:PivotGridCustomTotal SummaryType="Average" />
<dxpg:PivotGridCustomTotal SummaryType="Sum" />
<dxpg:PivotGridCustomTotal SummaryType="Max" />
<dxpg:PivotGridCustomTotal SummaryType="Min" />
</dxpg:PivotGridField.CustomTotals>
</dxpg:PivotGridField>
<dxpg:PivotGridField Name="fieldProductName" FieldName="ProductName" Area="RowArea"
Caption="Product Name" />
<dxpg:PivotGridField Name="fieldOrderYear" FieldName="OrderDate" Area="ColumnArea"
Caption="Order Year" GroupInterval="DateYear" />
<dxpg:PivotGridField Name="fieldExtendedPrice" FieldName="Extended Price"
Area="DataArea" CellFormat="c0" />
</dxpg:PivotGridControl.Fields>
</dxpg:PivotGridControl>
</Grid>
</Window>
|
MainWindow.xaml.cs |
using System.Data;
using System.Data.OleDb;
using System.Windows;
using DevExpress.Xpf.PivotGrid;
using HowToBindToMDB.NwindDataSetTableAdapters;
using System;
namespace HowToBindToMDB {
public partial class MainWindow : Window {
NwindDataSet.SalesPersonDataTable salesPersonDataTable = new NwindDataSet.SalesPersonDataTable();
SalesPersonTableAdapter salesPersonDataAdapter = new SalesPersonTableAdapter();
public MainWindow() {
InitializeComponent();
pivotGridControl1.DataSource = salesPersonDataTable;
}
private void Window_Loaded(object sender, RoutedEventArgs e) {
salesPersonDataAdapter.Fill(salesPersonDataTable);
object[] filter = new object[15];
Array.Copy(fieldProductName.GetUniqueValues(), filter, filter.Length);
fieldProductName.FilterValues.ValuesIncluded = filter;
}
}
}
|
MainWindow.xaml.vb |
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.OleDb
Imports System.Windows
Imports DevExpress.Xpf.PivotGrid
Imports HowToBindToMDB.NwindDataSetTableAdapters
Imports System
Namespace HowToBindToMDB
''' <summary>
''' Interaction logic for MainWindow.xaml
''' </summary>
Partial Public Class MainWindow
Inherits Window
Private salesPersonDataTable As New NwindDataSet.SalesPersonDataTable()
Private salesPersonDataAdapter As New SalesPersonTableAdapter()
Public Sub New()
InitializeComponent()
pivotGridControl1.DataSource = salesPersonDataTable
End Sub
Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
salesPersonDataAdapter.Fill(salesPersonDataTable)
Dim filter(14) As Object
Array.Copy(fieldProductName.GetUniqueValues(), filter, filter.Length)
fieldProductName.FilterValues.ValuesIncluded = filter
End Sub
End Class
End Namespace
|