WinForm应用实战开发指南 - 如何用DevExpress实现表格列表内容分组展示?

发布时间:2026/11/5 20:44:33

WinForm应用实战开发指南 - 如何用DevExpress实现表格列表内容分组展示? 在开发Winform界面的时会遇到需要对一些字段进行一些汇总的管理如果在列表中能够对表格列表中的内容进行分组展示将比较符合预期本文主要介绍在Winform开发中如何利用DevExpress的GridView实现该功能。PS给大家推荐一个C#开发可以用到的界面组件——​DevExpress WinForms​它能完美构建流畅、美观且易于使用的应用程序无论是Office风格的界面还是分析处理大批量的业务数据它都能轻松胜任DevExpress新旧版本帮助文档获取可点击这篇文章查看——《界面控件DevExpress v26.1帮助文档大全CHM版本》准备数据表和一些数据我们来以ERP系统中的一个原料表格来介绍对表格数据汇总的处理首先创建一个原料表用来测试表的数据库设计可以采用PowerDesigner等类似的建模工具设计如下所示。通过预览生成SQL的方式我们可以生成对应不同的数据库的数据库脚本用于创建对应的数据库表。生成对应的数据表后我们往里面填入一些测试的数据用于实际的测试处理。我们准备类别不同的数据写入为了方便测试具体数据效果如下所示。有了这些我们就可以顺利进行下面的代码开发了。基于具体框架生成基础数据库操作类在这里可以根据实际的需要生成相关的基础数据库操作类如Winform框架或者SqlSugar 开发框架的Winform前端都可以直接生成对应的框架基础代码这里以我们的SqlSugar 开发框架模式来开发对应的Winform界面。由于我们开发一般是基于增量式的开发方式因此可以一次性选择新增的表进行生成底层框架的支持代码如下确定界面所示。最终生成一个可以直接运行的项目整体框架方案。如果我们是考虑增量式的整合在现有的项目上那么可以把SugarProjectCore项目目录里面的文件夹整个复制整合到已有的项目上即可。它们的目录结构已经根据不同的功能放在了不同的文件夹中了如下图所示。例如我们把它们整个复制放置到了对应项目目录下如下所示。那么目前我们已有项目上就增加了对应的访问数据库的业务类所需要的模型、接口、具体实现类了。接下来就是对Winform的界面进行生成了。生成相关的界面并实现分组的特殊处理前面我们介绍了这个案例介绍基于SqlSugar开发框架的实现因此基于SqlSugar开发框架的Winform界面进行生成即可。生成的界面直接调用刚才的创建的基础接口来请求数据和绑定处理以及相关的导入导出、编辑、删除等基础操作。上面的界面就是基于SqlSugar开发框架生成的Winform界面的时候对界面中查询条件、列表展示的字段以及编辑界面的字段进行设计的处理代码生成工具根据这些设定进行界面代码的生成。生成的代码自动包含了列表展示和编辑等基础界面功能如下代码文件所示。我们把这些文件整合到已有的UI项目上就可以实现表的界面代码增量的生成了。直接测试编译运行稍作调整最终的界面效果如下所示。以上的表格数据只是常规的展示并没有实现分组的处理我们增加一个复选框用来设置分组处理的展示如下界面所示。在WInform界面中生成的界面代码包含了对数据的绑定显示如下就是对表的数据请求函数。/// summary /// 获取数据 /// /summary /// returns/returns private async TaskIPagedResultMaterialInfo GetData() { MaterialPagedDto pagerDto null; if (advanceCondition ! null) { pagerDto new MaterialPagedDto(this.winGridViewPager1.PagerInfo); pagerDto dlg.GetPagedResult(pagerDto); } else { //构建分页的条件和查询条件 pagerDto new MaterialPagedDto(this.winGridViewPager1.PagerInfo) { //添加所需条件 Category this.txtCategory.Text.Trim(), Code this.txtCode.Text.Trim(), Name this.txtName.Text.Trim(), Alias this.txtAlias.Text.Trim(), UsePurpose this.txtUsePurpose.Text.Trim(), SupplierSimple this.txtSupplierSimple.Text.Trim(), Producer this.txtProducer.Text.Trim(), }; //日期和数值范围定义 } var result await BLLFactoryIMaterialService.Instance.GetListAsync(pagerDto); return result; }以上就是根据界面的条件进行数据的条件查询并返回记录集合。在获得记录集合后我们把它赋值给自定义的分页控件组件就可以实现相关数据的正常展示了。//获取分页数据列表 var result await GetData(); //设置所有记录数和列表数据源 this.winGridViewPager1.PagerInfo.RecordCount result.TotalCount; //需先于DataSource的赋值更新分页信息 this.winGridViewPager1.DataSource result.Items;为了实现分组的处理展示我们需要判断上面的复选框条件进行分组条件和表达式的创建处理即可如下代码所示。//增加汇总字段和显示 var gridView1 this.winGridViewPager1.gridView1; if (checkGroup.Checked) { this.winGridViewPager1.ShowLineNumber false; gridView1.IndicatorWidth 0; gridView1.OptionsView.ShowGroupExpandCollapseButtons true;//显示折叠的分组 gridView1.OptionsView.AllowCellMerge true; //允许合并字段 gridView1.OptionsView.GroupDrawMode GroupDrawMode.Standard; gridView1.GroupSummary.Clear(); gridView1.Columns[Category].GroupIndex 0;//对类别进行分组展示 var item new GridGroupSummaryItem(); item.FieldName Id; item.DisplayFormat 合计数量 {0:n}; item.SummaryType DevExpress.Data.SummaryItemType.Count;//Sum、Average等 gridView1.GroupSummary.Add(item); gridView1.ExpandAllGroups(); } else { gridView1.GroupSummary.Clear(); this.winGridViewPager1.ShowLineNumber true; gridView1.OptionsView.AllowCellMerge false; }以上就是对数据记录进行分组的代码核心代码就几行可以很容易实现我们所需要的分组效果如下界面所示。如果我们不需要合并取消设置为false即可。gridView1.OptionsView.AllowCellMerge false;以上就是我们介绍基于SqlSugar开发框架生成基础代码、界面代码、以及实现分组处理展示的一些总结。本文转载自博客园 - 伍华聪
延伸阅读

更多相关文章

2026/11/2 10:15:43

如何永久保存微信聊天记录:面向普通用户的完整解决方案

如何永久保存微信聊天记录:面向普通用户的完整解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCh…

2026/10/27 18:28:09

Zotero Reference终极指南:3分钟搞定PDF参考文献自动导入

Zotero Reference终极指南:3分钟搞定PDF参考文献自动导入 【免费下载链接】zotero-reference PDF references add-on for Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-reference Zotero Reference是一款专为Zotero文献管理工具设计的智能插…

2026/11/5 16:51:33

EasyU优启通PE维护盘实战指南:制作、启动与核心操作全解析

1. 为什么一个PE维护盘值得单独拿出来聊装系统、修引导、救数据、清病毒,这些活儿但凡干过几次的人都知道,真正决定效率的往往不是你手速多快,而是手边那套PE环境靠不靠谱。EasyU(圈内习惯叫优启通)就是在这个场景下被…

2026/11/5 16:26:13

Rust原来很简单二:所有权系统

Part 2 核心篇 —— 所有权系统 本篇覆盖 第 6 ~ 10 章:所有权、借用与引用、生命周期、字符串与切片、内存模型。 ⚠️ 这是全书最重要的一篇。 把它吃透,Rust 从此“很简单”;跳过它,你会处处碰壁。请慢下来,动手敲每一段代码。 第 6 章 所有权:Rust 的第一性原理 6…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑