本主题提供了关于分组汇总的信息。 汇总的基础信息在 汇总概述 主题中介绍。
创建分组汇总
可以通过 GridView.GroupSummary 集合访问分组汇总。 它表示一个 GridGroupSummaryItemCollection 类对象,并且存储 GridGroupSummaryItem 对象。
可以在设计时刻或通过代码把汇总项添加到此集合中。 要在设计时刻设置分组汇总,则执行下列步骤:
-
调用 XtraGrid 设计器 的 “Group Summary Items(分组汇总项)”页面。
-
单击 Add 按钮添加汇总项,然后定制它们。
单个汇总项是由 GridGroupSummaryItem 类对象表示的,它是 GridSummaryItem 类的子类。 它提供了下列主要属性:
- GridSummaryItem.SummaryType —— 指定要计算的分组汇总类型。
- GridSummaryItem.FieldName —— 指定必须要计算汇总的字段。
- GridGroupSummaryItem.ShowInGroupColumnFooter —— 指定显示分组汇总值的位置 —— 在分组行中,或在特定列的脚注中。
- GridSummaryItem.DisplayFormat —— 允许定制分组汇总值的显示格式。
出于演示目的,本例中使用了 GridSummaryItem.DisplayFormat 属性。 要学习更多关于汇总值格式的内容,请参阅 设置汇总值的格式。
-
运行此应用程序。 分组汇总将被显示在分组行中:
分组汇总的位置
分组汇总可以被显示在两个地方:
由 GridGroupSummaryItem.ShowInGroupColumnFooter 属性值确定在何处显示分组汇总。 如果此属性值被设置为 null,则汇总值被显示在分组行中,如上图所示。 要把汇总值显示在分组脚注中、特定列下面,则把该列指派到 GridGroupSummaryItem.ShowInGroupColumnFooter 属性。
注意,分组脚注的可视性是由 GridView.GroupFooterShowMode 属性指定的。 如果此属性值被设置为 Hidden,则最终用户不能访问分组脚注。
分组汇总的上下文菜单
如果 分组脚注 可视,则最终用户可以改变现有的或创建新的分组汇总。 要执行此任务,最终用户需要使用鼠标右键单击特定列下面的分组脚注单元格。 脚注的上下文菜单 将出现。 它允许为被单击的列改变汇总类型或创建新的汇总:
在默认情况下,仅当分组汇总存在时分组脚注才是可视的。 但是,可以通过把 GridView.GroupFooterShowMode 属性设置为 VisibleAlways,使分组脚注始终可用,并且使分组脚注的上下文菜单始终可用。
要允许最终用户在运行时刻定制分组汇总,则设置 GridOptionsMenu.ShowGroupSummaryEditorItem 选项。 此选项启用分组列的 Group Summary Editor(分组汇总编辑器) 菜单命令 (在 列标头的上下文菜单 中)。 选择此菜单项打开分组汇总编辑器:
要学习如何定制上下文菜单,请参阅 为弹出式菜单实现自定义行为 主题。 当 GridSummaryItem.SummaryType 属性值设置为 Custom 时,分组脚注的上下文菜单不可用。
示例
下面的示例展示了如何创建两个分组汇总项。 第一个汇总项表示分组内记录的总数,并显示在分组行中。 第二个汇总项计算 UnitPrice 字段的合计,并显示在分组脚注内、 Unit Price 列下面。 代码的运行结果如下图所示:
C# | 复制代码 |
---|---|
using DevExpress.XtraGrid; using DevExpress.XtraGrid.Views.Grid; // Make the group footers always visible. gridView1.GroupFooterShowMode = GroupFooterShowMode.VisibleAlways; // Create and setup the first summary item. GridGroupSummaryItem item = new GridGroupSummaryItem(); item.FieldName = "ProductName"; item.SummaryType = DevExpress.Data.SummaryItemType.Count; gridView1.GroupSummary.Add(item); // Create and setup the second summary item. GridGroupSummaryItem item1 = new GridGroupSummaryItem(); item1.FieldName = "UnitPrice"; item1.SummaryType = DevExpress.Data.SummaryItemType.Sum; item1.DisplayFormat = "Total {0:c2}"; item1.ShowInGroupColumnFooter = colUnitPrice; gridView1.GroupSummary.Add(item1); |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.XtraGrid Imports DevExpress.XtraGrid.Views.Grid ' Make the group footers always visible. Private gridView1.GroupFooterShowMode = GroupFooterShowMode.VisibleAlways ' Create and setup the first summary item. Private item As GridGroupSummaryItem = New GridGroupSummaryItem() Private item.FieldName = "ProductName" Private item.SummaryType = DevExpress.Data.SummaryItemType.Count gridView1.GroupSummary.Add(item) ' Create and setup the second summary item. Dim item1 As GridGroupSummaryItem = New GridGroupSummaryItem() item1.FieldName = "UnitPrice" item1.SummaryType = DevExpress.Data.SummaryItemType.Sum item1.DisplayFormat = "Total {0:c2}" item1.ShowInGroupColumnFooter = colUnitPrice gridView1.GroupSummary.Add(item1) |