当前位置: 首页 > news >正文

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

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

DevExpress WinForms中文使用教程图集

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

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

开始

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

DevExpress WinForms中文使用教程图集

添加总摘要

首先启用View页脚,展开GridView.OptionsView属性并打开GridOptionsView.ShowFooter选项。

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

DevExpress WinForms中文使用教程图集

添加分组摘要

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

DevExpress WinForms中文使用教程图集

实现自定义汇总计算算法

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

C#

// Variables that store summary values.
int discontinuedProductsCount;
double totalPrice;

要实现汇总计算算法,处理View的GridView.CustomSummaryCalculate事件,在事件处理程序中,使用GridSummaryItem.Tag属性来标识汇总项。

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);
}
初始化

为了允许您初始化汇总开始值,GridView.CustomSummaryCalculate事件首先被触发,同时CustomSummaryEventArgs.SummaryProcess参数被设置为CustomSummaryProcess.Start。在此阶段,您可以重置已停产产品的计数器和将计算所有库存产品总价的变量。

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;
}
}
}
计算

然后在CustomSummaryEventArgs.SummaryProcess参数设置为GridView.CustomSummaryCalculate的情况下,CustomSummaryProcess.Calculate事件会为视图中的每一行数据或组中的每一行数据触发,这是您可以累积汇总值的地方。当前处理的行和字段值由事件的CustomSummaryEventArgs.RowHandle 和 CustomSummaryEventArgs.FieldValue参数指定。

对于总摘要,您需要将产品的单价乘以库存单位,并将结果添加到之前的总价中。对于分组总结,如果产品已停产,则增加计数器。

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;
}
}
}
结束

在处理完所有行之后,GridView.CustomSummaryCalculate事件被再次引发,并且CustomSummaryEventArgs.SummaryProcess参数被设置为CustomSummaryProcess.Finalize。在此阶段,完成汇总计算并将汇总值分配给事件的CustomSummaryEventArgs.TotalValue参数。

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;
}
}
}

http://www.dtcms.com/a/545090.html

相关文章:

  • 西安建设市场诚信信息平台网站wordpress文章缩略图
  • 解锁未来:云原生如何重塑企业数字竞争力
  • 铜陵市建设工程管理局网站专业的网站开发团队
  • AI赋能座舱产品需求开发
  • SENT协议详解
  • 2026年ESWA SCI1区TOP,基于成本差异的跨境公路物流混合车队构成与调度:一种双层规划方法,深度解析+性能实测
  • 2025广州国际物联网产业生态博览会(物联网展)最新技术与亮点揭秘!
  • 【C++】哈希表实现 - 链地址法/哈希桶
  • 建设一个教程视频网站需要什么资质龙岗网络推广公司
  • 后端日志框架
  • 服务器在企业中的作用与价值
  • 《搭建属于自己的网站之网页前端学习》基础入门
  • 拿网站做商标童装网站建设
  • 金融投资网站毕设做网站是不是太low
  • 【pandas】pandas apply 方法详解
  • 散户如何运用券商手机智能T0算法
  • CRMEB-PHP订单删除机制详解
  • 分数阶微分方程谱方法求解
  • 经典“绿叶”算法——SVM回归预测(SVR)算法及MATLAB实现
  • 南漳网站开发wordpress flash加载插件
  • 过度依赖单一工具会带来哪些风险
  • 132-Spring AI Alibaba Vector Neo4j 示例
  • 杜集网站建设免费做网站公司ydwzjs
  • 中心网站设计建筑工程总承包合同范本
  • AWS ECS 健康检查与部署配置最佳实践指南
  • leetcode 205. 同构字符串 python
  • wordpress 纯静态插件wordpress 文章seo
  • [无人机sdk] `Linker` | 设置加密密钥
  • 淘宝网发布网站建设wordpress 取消做这
  • 【数字逻辑】24进制LED综合控制实战!10灯精准执行(74HC161+138+139完整方案)