提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2025-10-28 14:53:16.360|阅读 29 次
概述:本文将为大家介绍如何使用DevExpress WinForms数据网格控件实现自定义聚合函数来计算总数和组汇总,欢迎下载最新版组件体验!
#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>
DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
DevExpress GridControl允许您实现自定义聚合函数来计算总数和组汇总,在本教程中您将创建一个使用来自两个不同字段的值计算的汇总,还将实现一个自定义组汇总来计算将某个字段值设置为true的记录数。
获取DevExpress WinForms v25.1正式版下载
DevExpress技术交流群11:749942875 欢迎一起进群讨论
从没有任何汇总的GridControl开始。
首先启用View页脚,展开属性并打开选项。
之后选择Unit Price列,展开其属性,并将设置为,使用属性自定义文本格式。另外,将属性设置为1,此值将用于在代码中标识此摘要项。
现在创建一个新的分组摘要,调用网格设计器,切换到分组摘要项页面并添加新项。指定文本格式,将属性设置为Discontinued,将属性设置为,将属性设置为2。
跳转到代码视图并声明两个将存储汇总值的变量。
C#
// Variables that store summary values. int discontinuedProductsCount; double totalPrice;
要实现汇总计算算法,处理View的事件,在事件处理程序中,使用属性来标识汇总项。
C#
private void gridView_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e) {
GridView view = sender as GridView;
// Get the summary ID.
int summaryID = Convert.ToInt32((e.Item as GridSummaryItem).Tag);
}
为了允许您初始化汇总开始值,事件首先被触发,同时参数被设置为。在此阶段,您可以重置已停产产品的计数器和将计算所有库存产品总价的变量。
C#
private void gridView_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e) {
// ...
// Custom summary initialization.
if (e.SummaryProcess == CustomSummaryProcess.Start) {
switch(summaryID) {
case 1:
totalPrice = 0;
break;
case 2:
discontinuedProductsCount = 0;
break;
}
}
}
然后在参数设置为的情况下,事件会为视图中的每一行数据或组中的每一行数据触发,这是您可以累积汇总值的地方。当前处理的行和字段值由事件的 和 参数指定。
对于总摘要,您需要将产品的单价乘以库存单位,并将结果添加到之前的总价中。对于分组总结,如果产品已停产,则增加计数器。
C#
private void gridView_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e) {
// ...
// Custom summary calculation.
if (e.SummaryProcess == CustomSummaryProcess.Calculate) {
switch (summaryID) {
case 1: // The total summary calculated against the 'UnitPrice' column.
int unitsInStock = Convert.ToInt32(view.GetRowCellValue(e.RowHandle, "UnitsInStock"));
totalPrice += Convert.ToDouble(e.FieldValue) * unitsInStock;
break;
case 2: // The group summary.
Boolean isDiscontinued = Convert.ToBoolean(e.FieldValue);
if (isDiscontinued) discontinuedProductsCount++;
break;
}
}
}
在处理完所有行之后,事件被再次引发,并且参数被设置为。在此阶段,完成汇总计算并将汇总值分配给事件的参数。
C#
private void gridView_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e) {
// ...
// Finalization.
if (e.SummaryProcess == CustomSummaryProcess.Finalize) {
switch (summaryID) {
case 1:
e.TotalValue = totalPrice;
break;
case 2:
e.TotalValue = discontinuedProductsCount;
break;
}
}
}
运行应用程序来查看结果,View在Unit Price列下的页脚单元格显示一次针对两个字段计算的摘要。按类别列对网格的数据进行分组,组行显示每个组中已停产产品的数量。
// Variables that store summary values.
int discontinuedProductsCount;
double totalPrice;
private void gridView_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e) {
GridView view = sender as GridView;
// Get the summary ID.
int summaryID = Convert.ToInt32((e.Item as GridSummaryItem).Tag);
// Initialization.
if (e.SummaryProcess == CustomSummaryProcess.Start) {
discontinuedProductsCount = 0;
totalPrice = 0;
}
// Calculation.
if (e.SummaryProcess == CustomSummaryProcess.Calculate) {
switch (summaryID) {
case 1: // The total summary calculated against the 'UnitPrice' column.
int unitsInStock = Convert.ToInt32(view.GetRowCellValue(e.RowHandle, "UnitsInStock"));
totalPrice += Convert.ToDouble(e.FieldValue) * unitsInStock;
break;
case 2: // The group summary.
Boolean isDiscontinued = Convert.ToBoolean(e.FieldValue);
if (isDiscontinued) discontinuedProductsCount++;
break;
}
}
// Finalization.
if (e.SummaryProcess == CustomSummaryProcess.Finalize) {
switch (summaryID) {
case 1:
e.TotalValue = totalPrice;
break;
case 2:
e.TotalValue = discontinuedProductsCount;
break;
}
}
}
慧都是⼀家⾏业数字化解决⽅案公司,专注于软件、⽯油与⼯业领域,以深⼊的业务理解和⾏业经验,帮助企业实现智能化转型与持续竞争优势。
慧都科技是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表盘)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ldacury.cn
文章转载自:慧都网



本文主要介绍如何在MVVM应用程序中使用虚拟源,欢迎下载最新版组件体验!
在自动化开发流程中,集成静态代码分析对保障代码质量至关重要。Parasoft C/C++test 的命令行工具为持续集成提供了强大支持。下面将说明如何使用 cpptesttrace 和 cpptestcli 这两个核心工具,完成从项目构建到静态分析的全流程。
在本教程中,您将学习如何借助Aspose.Tasks,使用Python在Excel中打开MPP文件,并将其导出为常见的电子表格格式,例如 Spreadsheet 2003 XML、XLSX和CSV。
本文将为大家介绍如何使用DevExpress WinForms数据网格控件实现自定义聚合函数来计算总数和组汇总,欢迎下载最新版组件体验!
相关产品
为Windows Forms平台创建具有影响力的业务解决方案,高性价比WinForms界面控件套包。
DevExpress DXperience Subscription高性价比的企业级.NET用户界面套包,助力企业创建卓越应用!
DevExpress Universal Subscription优秀的界面控件开发包,帮助企业构建卓越应用!
最新文章 MORE
靠谱朗驰娱乐体育相关的文章 MORE
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ldacury.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
靠谱朗驰娱乐体育 