DevExpress WinForms中文教程:Data Grid - 如何按汇总值对分组行进行排序?

DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

本教程首先展示了网格的内置UI,允许您根据汇总值对组行进行排序。然后您将看到如何在需要时禁用此UI,以及如何在代码中对组行进行排序。

获取DevExpress WinForms v25.1正式版下载

开始

从已经针对Category列分组的GridControl开始。

默认情况下,分组行按字母顺序排序,其中"Beverages"分组行后面是"Condiments",然后是"Confections" ,依此类推。

添加分组汇总

在表单Load事件处理程序中,创建一个计算OrderSum列中最大值的分组汇总,汇总值将显示在分组行中。

C#

cs 复制代码
using DevExpress.Data;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;

private void Form1_Load(object sender, EventArgs e) {
gridView.GroupSummary.Clear();
GridSummaryItem summaryItemMaxOrderSum = gridView.GroupSummary.Add(new GridSummaryItem(DevExpress.Data.SummaryItemType.Max, "OrderSum", null, "(MAX Order Sum = {0:c2})"));
}

VB.NET

vbnet 复制代码
Imports DevExpress.Data
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Columns

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
gridView1.GroupSummary.Clear()
Dim summaryItemMaxOrderSum As GridSummaryItem = gridView.GroupSummary.Add(New GridSummaryItem(DevExpress.Data.SummaryItemType.Max, "OrderSum", Nothing, "(MAX Order Sum = {0:c2})"))
End Sub

运行应用程序,分组行显示每个分组中OrderSum列的最大值。

终端用户的功能

右键单击Category 列标题,选择按Sort by Summary项,然后按升序排序。

因此,分组行现在根据汇总值按升序排序,在分组列中显示的特殊符号表示当前排序顺序。

以同样的方式,您可以反转排序顺序。要删除分组行排序,请右键单击Category 列标题并选择Clear Summary Sorting

限制终端用户的功能

选择grid(网格)视图,展开其GridView.OptionsMenu属性并禁用GridOptionsMenu.ShowGroupSortSummaryItems选项。

运行应用程序并右键单击Category列标题,现在作为结果显示的上下文菜单不包含Sort by Summary项。

按代码中的汇总值排序

再次关闭应用程序并返回到form Load事件处理程序,从视图的ColumnView.SortInfo集合中获取第一个分组列。要在代码中对组行进行排序,请创建一个新的GroupSummarySortInfo对象,使用摘要项、目标列和所需的排序顺序作为参数。最后,清除GridView.GroupSummarySortInfo集合,并使用GroupSummarySortInfoCollection.ClearAndAddRange方法将创建的对象添加到其中。

C#

cs 复制代码
using DevExpress.Data;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;

private void Form1_Load(object sender, EventArgs e) {
// ...
GridColumn firstGroupColumn = gridView.SortInfo[0].Column;
GroupSummarySortInfo[] groupSummaryToSort = { new GroupSummarySortInfo(summaryItemMaxOrderSum, firstGroupColumn, ColumnSortOrder.Ascending) };
gridView.GroupSummarySortInfo.ClearAndAddRange(groupSummaryToSort);
}

VB.NET

vbnet 复制代码
Imports DevExpress.Data
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Columns

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
' ...
Dim firstGroupColumn As GridColumn = gridView1.SortInfo(0).Column
Dim groupSummaryToSort() As GroupSummarySortInfo = { New GroupSummarySortInfo(summaryItemMaxOrderSum, firstGroupColumn, ColumnSortOrder.Ascending) }
gridView1.GroupSummarySortInfo.ClearAndAddRange(groupSummaryToSort)
End Sub

运行应用程序来查看结果,分组行现在将按汇总值的升序排序。

相关推荐
刘欣的博客2 天前
c# winform 控件dock 停造位置、摆放顺序问题
c#·winform·dock停靠问题
Aevget3 天前
MFC扩展库BCGControlBar Pro v37.2 - 全新的VS 2026可视化管理器
c++·mfc·bcg·界面控件·ui开发
故事不长丨9 天前
C#log4net详解:从入门到精通,配置、实战与框架对比
c#·.net·wpf·log4net·日志·winform·日志系统
Aevget10 天前
DevExpress WinForms v25.2亮点 - 支持.NET 10 & VS 2026
.net·界面控件·devexpress·ui开发·winforms·vs 2026
Aevget12 天前
DevExpress WPF中文教程:Data Grid - 如何绑定到有限制的自定义服务(四)?
wpf·界面控件·devexpress·ui开发·.net 10
Lv117700813 天前
WinForm常用控件功能介绍及使用模板
笔记·c#·visual studio·winform
Aevget13 天前
DevExpress WinForms中文教程:Data Grid - 如何自定义行预览部分?
界面控件·winform·devexpress·ui开发·.net 10
Aevget14 天前
Kendo UI for jQuery 2025 Q4新版亮点 - AI 助手持续加持,主力开发更智能
人工智能·ui·jquery·界面控件·kendo ui
Aevget19 天前
界面控件DevExpress v25.2新版亮点 - 进一步升级AI扩展功能
人工智能·界面控件·devexpress·ui开发·.net 10
Crazy Struggle21 天前
C# 不依赖 OpenCV 的图像处理算法:滤波、锐化与边缘检测
.net·开源项目·winform