没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2025-08-05 10:19:16.660|阅读 7 次
概述:本教程主要为大家介绍DevExpress WinForms数据网格控件中的分组行API,欢迎下载最新版组件体验!
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
本教程从DevExpress WinForms 网格中默认可用的数据分组UI开始,然后向您展示如何在设计时应用数据分组,并继续介绍相关选项,例如:
最后,本教程将指导您了解可用于在代码中分组数据的基本API。
获取DevExpress WinForms v25.1正式版下载
DevExpress技术交流群11:749942875 欢迎一起进群讨论
要按特定列对数据进行分组,最终用户可以将列标题面板中的标题拖到组面板上。DevExpress WinForms GridControl自动按升序对数据组进行排序,若要反转排序顺序,请单击列标题。
要展开分组行并因此访问它的子数据行,双击组行的任何位置或单击行展开按钮。
对数据进行分组的另一种方法是从列标题上下文菜单中选择Group by This Column项,如果分组面板中有两个或更多列,则行将根据分组列值形成层次结构。
您可以将列标题拖动到分组面板中的另一个位置。
拖动列标题时,按住Ctrl键将一个标题停靠到另一个标题上,这允许您一次按多个列对网格数据进行分组。
合并的列分组块可以与常规列分组组合。
若要取消数据组,请将列标题从分组面板拖到列标题面板,或右键单击列标题并从上下文菜单中选择Ungroup。要删除所有分组,请右键单击组面板并选择Clear Grouping。
在设计时,您可以使用相同的拖放操作和上下文菜单。除此之外,您还可以使用列的GridColumn.GroupIndex属性。将此属性设置为非负整数值,该值指定分组级别。将Received列的值设置为0,将Read列的值设置为1。因此,Received列将处于根分组级别,Read列将处于第二级。
运行应用程序并尝试展开和折叠行,来查看数据行分组背后的逻辑。
默认情况下,数据组包含相同的值,但网格还允许将值范围分组在一起。这可以很容易地用日期/时间列来演示。打开显示Received列设置的Property网格,并将GridColumn.GroupInterval属性设置为ColumnGroupInterval.DateRange。结果,网格行被组合成日期范围,包括Today”, “Yesterday”, “Last Week”等。
接下来,查看与数据分组有关的影响网格操作的选项。
默认情况下,分组列值尽在分组行中显示,列不在视图中显示。如果您需要显示它们,展开视图的GridView.OptionsView属性并启用GridOptionsView.ShowGroupedColumns选项,将看到分组列现在保留在视图中。
视图的GridOptionsView.GroupDrawMode属性指定了分组行的绘制样式,更改这个属性值,绘制样式通常会影响分组行的高度和数据组的缩进。
现在展开View的GridView.OptionsBehavior属性并启用GridOptionsBehavior.AllowFixedGroups选项,在滚动分组数据时,最上面的组行固定在网格的顶部,并且始终显示。一个特殊的符号表示您已经滚动过了该分组中的一部分行。
分组操作后,数据组通常会被折叠。要自动展开所有组行,请将GridOptionsBehavior.AutoExpandAllGroups属性设置为true。如果更改分组,请查看如何显示所有数据行。
GridControl允许您阻止最终用户更改已应用于网格的分组条件,将列的OptionsColumn.AllowGroup属性设置为false,来防止最终用户根据该列进行分组。要对视图中的所有列执行相同的操作,请禁用视图的GridOptionsCustomization.AllowGroup属性,另外您可以使用View的GridOptionsView.ShowGroupPanel属性隐藏分组面板。
下一步是了解如何在代码中对网格数据进行分组。请注意,无论视图的GridOptionsCustomization.AllowGroup和列的OptionsColumn.AllowGroup选项如何,这都可以工作。
根据按钮的Click事件处理程序中的接收列和读取列对数据进行分组,首先获取对应的两个网格列对象。通过调用View的GridView.ClearGrouping方法来清除现有的组设置,然后使用GridColumn.GroupIndex属性设置所需的分组级别。注意,GridControl将在每个语句之后重新排序它的数据——在我们的示例中是三次。为了防止过度更新,请使用ColumnView.BeginSort和ColumnView.EndSort方法。在这种情况下,网格视图将只更新一次。
C#
private void btn_Group_ItemClick(object sender, ItemClickEventArgs e) { GridColumn colReceived = gridView.Columns["Date"]; GridColumn colRead = gridView.Columns["Read"]; gridView.BeginSort(); try { gridView.ClearGrouping(); colReceived.GroupIndex = 0; colRead.GroupIndex = 1; } finally { gridView.EndSort(); } }
运行应用程序并单击Group按钮,因此网格数据按Received和Read列分组。
对网格列应用分组的另一种方法是使用视图的ColumnView.SortInfo集合,调用GridColumnSortInfoCollection.ClearAndAddRange方法来清除现有的排序/分组设置,然后根据需要对数据进行排序和分组。传递一个包含两个GridColumnSortInfo元素的数组作为方法的第一个参数,这些元素按升序对Received列和Read列应用排序。传递2作为第二个参数,从而表明需要应用数据分组,而不是排序。这个方法只更新View一次,所以您不需要使用ColumnView.BeginSort和ColumnView.EndSort方法。
C#
private void btn_Group_ItemClick(object sender, ItemClickEventArgs e) { GridColumn colReceived = gridView.Columns["Date"]; GridColumn colRead = gridView.Columns["Read"]; gridView.SortInfo.ClearAndAddRange(new GridColumnSortInfo[] { new GridColumnSortInfo(colReceived, DevExpress.Data.ColumnSortOrder.Ascending), new GridColumnSortInfo(colRead, DevExpress.Data.ColumnSortOrder.Ascending), }, 2); }
现在再次运行应用程序并单击Group按钮来查看结果。
要在Expand All Groups按钮得单击事件处理程序中展开所有分组行,请使用View的GridView.ExpandAllGroups方法。类似地,用GridView.CollapseAllGroups 方法调用为Collapse All Groups按钮编写的Click事件处理程序。
C#
private void btn_Expand_ItemClick(object sender, ItemClickEventArgs e) { gridView.ExpandAllGroups(); } private void btn_Collapse_ItemClick(object sender, ItemClickEventArgs e) { gridView.CollapseAllGroups(); }
通过单击Group按钮运行应用程序并对数据进行分组,单击Expand All Groups按钮时,将显示所有数据行。若要折叠组行,请单击Collapse All Groups按钮。
更多DevExpress线上公开课、中文教程资讯请上中文网获取
慧都是⼀家⾏业数字化解决⽅案公司,专注于软件、⽯油与⼯业领域,以深⼊的业务理解和⾏业经验,帮助企业实现智能化转型与持续竞争优势。
慧都科技是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表盘)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:慧都网Aspose.Imaging for .NET是一款深受 .NET 开发人员喜爱的图像处理 SDK,因为它灵活且易于开发人员使用。本教程将演示如何借助Aspose.Imaging for .NET在 C# 中无缝地将SVG转换为EMF。
本教程主要为大家介绍DevExpress WinForms数据网格控件中的分组行API,欢迎下载最新版组件体验!
本文将详细介绍如何使用 Spire.Doc for Python 库在 Python 中读取 Word 文档(包括 .doc 和 .docx 格式),并演示如何提取文本、图片、表格、批注、列表以及文档的元数据等信息。无论您是进行文档内容抓取、自动化报告生成,还是开发文档解析工具,本教程都将提供清晰的代码示例和实用指导。
从图像中提取文本是企业应用程序和日常生产力任务中的常见需求。在本文中,我们将探讨如何使用 Aspose.OCR 将图像文本转换为可编辑文本。请按照本分步指南,使用 Python、 C#、Java 构建您自己的图像文本到文本转换工具。
优秀的界面控件开发包,帮助企业构建卓越应用!
DevExpress DXperience Subscription高性价比的企业级.NET用户界面套包,助力企业创建卓越应用!
DevExpress WinForms Subscription为Windows Forms平台创建具有影响力的业务解决方案,高性价比WinForms界面控件套包。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号