SummaryItemBase.SummaryType Property

Gets or sets the aggregate function type. This is a dependency property.

Namespace: DevExpress.Xpf.Grid

Assembly: DevExpress.Xpf.Grid.v20.1.Core.dll

Declaration

public SummaryItemType SummaryType { get; set; }
Public Property SummaryType As SummaryItemType

Property Value

Type Description
SummaryItemType

A SummaryItemType enumeration value that specifies the aggregate function type.

Remarks

There are five predefined aggregate functions. These are: Sum, Min, Max, Average and Count. To implement your own aggregate function, set the SummaryType property to SummaryItemType.Custom, and handle the GridControl.CustomSummary event.

Average and Sum summaries are only calculated for columns that contain numerical data.

Examples

The following example demonstrates how to use custom summaries to count the total number of empty cells in the specified grid column.

NOTE

A complete sample project is available at https://github.com/DevExpress-Examples/how-to-summarize-empty-cells-e948.

<Window x:Class="CustomSummary_EmptyCells.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
    Title="Window1" Height="350" Width="450" >
    <Grid>
        <dxg:GridControl x:Name="grid" CustomSummary="grid_CustomSummary" GroupCount="1">
            <dxg:GridControl.SortInfo>
                <dxg:GridSortInfo FieldName="Text" />
            </dxg:GridControl.SortInfo>
            <dxg:GridControl.Columns>
                <dxg:GridColumn FieldName="Text" />
                <dxg:GridColumn FieldName="Number" />
            </dxg:GridControl.Columns>
            <dxg:GridControl.View>
                <dxg:TableView x:Name="view" AutoWidth="True" 
                               NavigationStyle="Cell" ShowTotalSummary="True"/>
            </dxg:GridControl.View>
            <dxg:GridControl.TotalSummary>
                <dxg:GridSummaryItem FieldName="Number" SummaryType="Custom" 
                                     DisplayFormat="Total empty cells count: {0}"/>
            </dxg:GridControl.TotalSummary>
            <dxg:GridControl.GroupSummary>
                <dxg:GridSummaryItem FieldName="Number" SummaryType="Custom" 
                                     DisplayFormat="Group empty cells count: {0}"/>
            </dxg:GridControl.GroupSummary>
        </dxg:GridControl>
    </Grid>
</Window>
using System.Windows;
using System.Collections.Generic;
using DevExpress.Data;
using DevExpress.Xpf.Data;
using DevExpress.Xpf.Grid;
// ...

namespace CustomSummary_EmptyCells {
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window {
        List<TestData> list;
        Dictionary<int, bool> selectedValues = new Dictionary<int, bool>();

        public Window1() {
            InitializeComponent();
            list = new List<TestData>();
            for (int i = 0; i < 100; i++) {
                list.Add(new TestData() { Text = "group " + i % 10, Number = i });
                if (i % 3 == 0)
                    list[i].Number = null;
            }
            grid.ItemsSource = list;
        }

        int emptyCellsTotalCount = 0;
        int emptyCellsGroupCount = 0;

        void grid_CustomSummary(object sender, CustomSummaryEventArgs e) {
            if (((GridSummaryItem)e.Item).FieldName != "Number")
                return;
            if (e.IsTotalSummary) {
                if (e.SummaryProcess == CustomSummaryProcess.Start) {
                    emptyCellsTotalCount = 0;
                }
                if (e.SummaryProcess == CustomSummaryProcess.Calculate) {
                    int? val = (int?)e.FieldValue;
                    if (!val.HasValue)
                        emptyCellsTotalCount++;
                    e.TotalValue = emptyCellsTotalCount;
                }
            }
            if (e.IsGroupSummary) {
                if (e.SummaryProcess == CustomSummaryProcess.Start) {
                    emptyCellsGroupCount = 0;
                }
                if (e.SummaryProcess == CustomSummaryProcess.Calculate) {
                    int? val = (int?)e.FieldValue;
                    if (!val.HasValue)
                        emptyCellsGroupCount++;
                    e.TotalValue = emptyCellsGroupCount;
                }
            }
        }

        public class TestData {
            public string Text { get; set; }
            public int? Number { get; set; }
        }
    }
}

Implements

DevExpress.Data.Summary.ISummaryItem.SummaryType
See Also