靠谱朗驰娱乐体育

DevExpress WinForms中文教程:Data Grid - 如何自定义汇总函数?

翻译|使用教程|编辑:龚雪|2025-10-28 14:53:16.360|阅读 29 次

概述:本文将为大家介绍如何使用DevExpress WinForms数据网格控件实现自定义聚合函数来计算总数和组汇总,欢迎下载最新版组件体验!

#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>

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

DevExpress WinForms中文使用教程图集

 DevExpress GridControl允许您实现自定义聚合函数来计算总数和组汇总,在本教程中您将创建一个使用来自两个不同字段的值计算的汇总,还将实现一个自定义组汇总来计算将某个字段值设置为true的记录数。

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

DevExpress技术交流群11:749942875      欢迎一起进群讨论

开始

从没有任何汇总的GridControl开始。

DevExpress WinForms中文使用教程图集
添加总摘要

首先启用View页脚,展开属性并打开选项。

 之后选择Unit Price列,展开其属性,并将设置为,使用属性自定义文本格式。另外,将属性设置为1,此值将用于在代码中标识此摘要项。

DevExpress WinForms中文使用教程图集
添加分组摘要

 现在创建一个新的分组摘要,调用网格设计器,切换到分组摘要项页面并添加新项。指定文本格式,将属性设置为Discontinued,将属性设置为,将属性设置为2。

DevExpress WinForms中文使用教程图集
实现自定义汇总计算算法

跳转到代码视图并声明两个将存储汇总值的变量。

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列下的页脚单元格显示一次针对两个字段计算的摘要。按类别列对网格的数据进行分组,组行显示每个组中已停产产品的数量。

DevExpress WinForms中文使用教程图集
完整代码
// 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)及行业定制解决方案,加速开发并强化交互体验。

慧都22周年庆火热开启·狂欢‘价’到!

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ldacury.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP
PM娱乐城知名最大推荐(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 腾曜集团权威足球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 真人权威半岛网址(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 利记十大真人网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 朗驰娱乐最火足球网站(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 知名朗驰娱乐足球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 线上十大盛凯国际推荐(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 朗驰娱乐线上足球大全(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新)