按照汇总值对分组行排序
当按照单个列对数据分组时,相同列值的记录被排列为相应的数据组。 每个数据组都由 分组行 标识。 当应用数据分组时,分组行被用于把数据行组织为树状。 在默认情况下,每个分组行都显示文本标识该列的标题、分组值和 分组汇总 文本 (如果存在)。 在默认情况下,记录被按照分组列排序。 如果对没有排序的列分组,则网格控件自动以升序对列排序,如下图所示。
但是,XtraGrid 还允许分组行按照 汇总值 排序。
根据由 GroupSummarySortInfo 对象提供的信息,分组行被按照汇总值排序。 这些对象提供的属性表示按照汇总值排序的分组行的嵌套级别、排序顺序、以及用于为行组计算汇总值的汇总项。 这些属性是只读的,并通过构造函数初始化。
要按照汇总值对分组行排序,则创建一个新的 GroupSummarySortInfo 对象,并把它添加到视图的 GridView.GroupSummarySortInfo 集合中 (使用 GroupSummarySortInfoCollection.Add 方法添加)。 一旦 GroupSummarySortInfo 对象被添加到该集合中,则分组行被自动按照其汇总值排序。
下面的示例展示了如何按照汇总值,对位于第一分组层级中的分组行排序。 根据 Freight 列的取值计算分组汇总。
C# | 复制代码 |
---|---|
using DevExpress.Data; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Columns; GridSummaryItem summaryItemMaxFreight; private void Form1_Load(object sender, System.EventArgs e) { // ... // Creating a new summary item and adding it the View's summary item collection. summaryItemMaxFreight = gridView1.GroupSummary.Add(SummaryItemType.Max, "Freight", null, String.Empty); } private void button1_Click(object sender, System.EventArgs e) { GridColumn summaryColumn = gridView1.Columns["Freight"]; if(summaryColumn.GroupIndex < 0 && gridView1.GroupCount > 0) { GridColumn firstGroupingColumn = gridView1.SortInfo[0].Column; gridView1.GroupSummarySortInfo.Add(summaryItemMaxFreight, ColumnSortOrder.Ascending, firstGroupingColumn); } } |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.Data Imports DevExpress.XtraGrid Imports DevExpress.XtraGrid.Columns Dim summaryItemMaxFreight As GridSummaryItem Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load ' ... ' Creating a new summary item and adding it the View's summary item collection. summaryItemMaxFreight = GridView1.GroupSummary.Add(SummaryItemType.Max, "Freight", _ Nothing, String.Empty) End Sub Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim summaryColumn As GridColumn = GridView1.Columns("Freight") If summaryColumn.GroupIndex < 0 And GridView1.GroupCount > 0 Then Dim firstGroupingColumn As GridColumn = GridView1.SortInfo(0).Column GridView1.GroupSummarySortInfo.Add(summaryItemMaxFreight, _ ColumnSortOrder.Ascending, firstGroupingColumn) End If End Sub |
下面的插图展示了结果:
要取消按照汇总值排序的分组行,则把相应的 GroupSummarySortInfo 对象从该集合中移除。 注意,在相应分组列的排序顺序被改变之后,这些对象被自动从集合中移除。
由最终用户对分组行排序
如果分组汇总被创建,并且启用了 GridOptionsMenu.ShowGroupSortSummaryItems 选项,则最终用户可以通过上下文菜单,按照汇总值对分组行排序。 这是通过使用鼠标右键单击分组列的标头、然后选择相应的上下文菜单命令来完成的: