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开发框架生成基础代码、界面代码、以及实现分组处理展示的一些总结。本文转载自博客园 - 伍华聪

相关新闻

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

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

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

2026/7/21 16:11:43阅读更多 →
强大的VS插件CodeRush全新发布v23.2.6——支持语音

强大的VS插件CodeRush全新发布v23.2.6——支持语音

CodeRush是一个强大的Visual Studio .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验。 DevExpress新旧版本帮助文档获取可点击这篇文章查看——>《界面控件DevExpress v26.1帮助文档大全(CHM版本)》 具…

2026/7/21 16:11:43阅读更多 →
从2B参数模型到200亿元估值,面壁智能押中了什么?

从2B参数模型到200亿元估值,面壁智能押中了什么?

人工智能正在经历一次重要迁移。过去几年,大模型竞争的核心是“让AI变得更聪明”:更大的参数规模、更强的推理能力、更丰富的知识储备,推动AI能力边界不断突破。AI不仅需要理解世界,更需要进入世界。具身智能需要在复杂环境中实时…

2026/7/21 16:11:43阅读更多 →
STM32游戏机外壳设计:从SolidWorks建模到3D打印的工程实践

STM32游戏机外壳设计:从SolidWorks建模到3D打印的工程实践

在嵌入式开发项目中,为自制的 STM32 游戏机设计并打印一个外壳,是项目从“功能原型”迈向“完整产品”的关键一步。很多开发者能熟练编写驱动、调试通信协议,却在将电路板装入实体外壳时,遇到模型与实物对不上的尴尬,导…

2026/7/21 21:27:36阅读更多 →
数据预处理七道关卡:从脏数据到高价值特征的工程化实践

数据预处理七道关卡:从脏数据到高价值特征的工程化实践

1. 数据预处理:被90%从业者跳过的“脏活”,却是模型效果的真正分水岭你有没有遇到过这样的情况:花三天调参,把learning rate试了12种组合,batch size从16调到256,连warmup step都手动算过三遍,最…

2026/7/21 21:27:36阅读更多 →
计算机毕业设计之基于springboot的项目管理平台的设计与实现

计算机毕业设计之基于springboot的项目管理平台的设计与实现

项目管理平台的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。与安卓,iOS相比较起来,项目管…

2026/7/21 21:27:36阅读更多 →
MVSim XML世界定义:ROS 2移动机器人仿真的物理建模核心

MVSim XML世界定义:ROS 2移动机器人仿真的物理建模核心

1. 项目概述:为什么在ROS 2生态里,MVSim的XML世界定义是“被低估的硬功夫”你正在看的,不是一份冷冰冰的API文档,而是一套专为移动机器人开发者打磨了多年、极度务实的仿真基建语言。关键词里那个“L5 | Tutorials > Advanced …

2026/7/21 21:27:36阅读更多 →
计算机毕业设计之基于springboot的向阳社区志愿者服务系统

计算机毕业设计之基于springboot的向阳社区志愿者服务系统

向阳社区志愿者服务系统采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的java进行编写,使用了springboot框架。该系统从两个对象:由管理员和志愿者来对系统进行设计构建。主要功能包括:个人信息修改,对志愿者…

2026/7/21 21:27:36阅读更多 →
CuPy实战指南:GPU加速NumPy计算,从入门到性能优化

CuPy实战指南:GPU加速NumPy计算,从入门到性能优化

在深度学习、科学计算和大规模数据处理领域,GPU加速已成为提升性能的关键。然而,直接使用CUDA C进行开发门槛高、周期长。如果你正在寻找一种既能利用GPU强大算力,又能保持像NumPy一样简洁优雅的Python开发体验的方案,那么CuPy无疑…

2026/7/21 21:25:35阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 0:51:49阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 0:51:49阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 0:51:49阅读更多 →
Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

📌教程适配:OpenClaw v2.7.9 | 兼容 Windows10/11、macOS 双系统 📖前言 当下各类本地 AI 工具层出不穷,多数产品仅能完成文字问答交互,很难直接操控电脑执行实际操作。OpenClaw,业内常称小龙虾 AI&#…

2026/7/21 0:01:46阅读更多 →
Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

聊《一次Codex项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&…

2026/7/21 0:01:46阅读更多 →
手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

大家好,还是我。前几期带大家做了心情日记本和可视化大屏,后台有朋友留言:“能不能教点好玩的?我想做游戏,但一行代码都不会。”行,这期就安排。今天的目标:从零做一个五子棋游戏。 带AI对战、三…

2026/7/21 0:03:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/20 22:51:39阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →