【devexpress】Gridcontorl分组时自定义底部页脚求和功能
再使用Gridcontorl的时候页脚的求和平时用起来都是非常方便的。不过有的时候需要普通的求和无法满足我们就可以通过自定义的方式来进行
第一种方法
使用求和的两列数据的总额进行计算毛利率百分比。在绑定数据后就可以直接使用
优点简单方便
缺点只能对总数的汇总计算,如果分组的页脚也有数据是无法通过这种方法来计算
//自定义求和
gridColumn14.SummaryItem.SetSummary(DevExpress.Data.SummaryItemType.Custom,string.Format("{0:N2}", (Convert.ToDouble(gridView1.Columns["销售金额"].SummaryItem.SummaryValue) - Convert.ToDouble(gridView1.Columns["公司成本"].SummaryItem.SummaryValue)) / Convert.ToDouble(gridView1.Columns["销售金额"].SummaryItem.SummaryValue)*100)+"%");
第二种
不写代码,在设计器中进行设置
首先打开设计器

在设计器中自己添加好分组列和数据列,此处省略。然后添加页脚求和
Group Summary Items。点击添加,并在右侧填写好参数。就可以实现页脚分组求和了

第三种方法
在CustomSummaryCalculate实践中进行计算
优点,可以计算分组汇总,总数汇总。可定义程度高
decimal num1 =0;
decimal num2 =0;
/// <summary>
/// 自定义求和
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)
{
//如果是分组的汇总
if (e.IsGroupSummary)
{
if((e.Item as GridSummaryItem).FieldName == "gridColumn14")
{
//开始计算
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
{
e.TotalValue = 0;
num1 = 0;
num2 = 0;
}
else
//正在计算
if(e.SummaryProcess== DevExpress.Data.CustomSummaryProcess.Calculate)
{
num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "公司成本"));
}
else //计算完毕
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
{
e.TotalValue = string.Format("{0:N2}", (num1 - num2) / num1 * 100) + "%";
}
}
else if ((e.Item as GridSummaryItem).FieldName == "gridColumn15")
{
//开始计算
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
{
e.TotalValue = 0;
num1 = 0;
num2 = 0;
}
else
//正在计算
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
{
num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "分成金额"));
}
else //计算完毕
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
{
e.TotalValue = string.Format("{0:N2}", num2 / num1 * 100) + "%";
}
}
else if ((e.Item as GridSummaryItem).FieldName == "gridColumn16")
{
//开始计算
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
{
e.TotalValue = 0;
num1 = 0;
num2 = 0;
}
else
//正在计算
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
{
num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "公司利润"));
}
else //计算完毕
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
{
e.TotalValue = string.Format("{0:N2}", num2 / num1 * 100) + "%";
}
}
}//如果是求和的汇总
else if (e.IsTotalSummary)
{
//总毛利率
if ((e.Item as GridSummaryItem).FieldName == "gridColumn14")
{
//Initialization 加载gridcontrol控件
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
{
e.TotalValue = 0;
num1 = 0;
num2 = 0;
}
else
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
{
num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "公司成本"));
}
else if(e.SummaryProcess== DevExpress.Data.CustomSummaryProcess.Finalize)
{
e.TotalValue = string.Format("{0:N2}", (num1 - num2) / num1 * 100) + "%";
}
}
else if((e.Item as GridSummaryItem).FieldName == "gridColumn15")
{
//Initialization 加载gridcontrol控件
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
{
e.TotalValue = 0;
num1 = 0;
num2 = 0;
}
else
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
{
num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "分成金额"));
}
else if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
{
e.TotalValue = string.Format("{0:N2}", num2 / num1 * 100) + "%";
}
}
else if ((e.Item as GridSummaryItem).FieldName == "gridColumn16")
{
//Initialization 加载gridcontrol控件
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
{
e.TotalValue = 0;
num1 = 0;
num2 = 0;
}
else
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
{
num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "公司利润"));
}
else if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
{
e.TotalValue = string.Format("{0:N2}", num2 / num1 * 100) + "%";
}
}
}
【devexpress】Gridcontorl分组时自定义底部页脚求和功能的更多相关文章
- datagrid 扩展 页脚 合计功能
效果图:合计信息展示在页脚中(showFooter:true) code: <!DOCTYPE html> <html> <head> <meta chars ...
- spring security采用自定义登录页和退出功能
更新... 首先采用的是XML配置方式,请先查看 初识Spring security-添加security 在之前的示例中进行代码修改 项目结构如下: 一.修改spring-security.xml ...
- CSS + DIV 让页脚始终底部
一 前言 经常设计页面时用到三层DIV,头DIV与脚DIV一般固定高度,而中间层DIV根据内容的多少,高度不定,我们经常希望但内容很少时,脚DIV保持在底部,当内容很多时,脚DIV被中间内容挤到下面, ...
- CSS + DIV 让页脚始终保持在页面底部
来源:David's Blog http://www.DavidQiu.com/ 文章链接:http://blog.davidqiu.com/post/2013-06-17/400517539 ...
- 【转载自W3CPLUS】如何将页脚固定在页面底部
该文章转载自:W3CPLUS 大漠的文章 http://www.w3cplus.com/css/css-sticky-foot-at-bottom-of-the-page 以下为全文 作为一个Web的 ...
- html 设置页脚div一直在页面底部
先上代码 <!DOCTYPE HTML> <html lang="en" style="height: 100%; width: 100%;" ...
- 将HTML页面页脚固定在页面底部(多种方法实现)
当一个HTML页面中含有较少的内容时,Web页面的footer部分随着飘上来,处在页面的半腰中间,给视觉效果带来极大的影响,接下来为大家介绍下如何将页脚固定在页面底部,感兴趣的朋友可以了解下 作为一个 ...
- bootstrap-table 页脚总计(自定义统计总数)
•首先给table添加属性: showFooter: footer js代码如下: //初始化bootstrapTableinitBootstrapTable: function () { var o ...
- 如何将页脚固定在页面底部,4中方法 转载自:W3CPLUS
原博客地址:http://www.w3cplus.com/css/css-sticky-foot-at-bottom-of-the-page 作为一个Web的前端攻城师,在制作页面效果时肯定有碰到下面 ...
- DIV+CSS:页脚永远保持在页面底部
页脚永远保持在页面底部 有时候,我们用CSS创建一个高度自适应布局,如何保证页脚(footer)在内容不超过一屏的情况下始终保持在布局最下方是一个比较头疼的事.我看过一些利用绝对定位的例子,但总感觉不 ...
随机推荐
- 手写tomcat——编写一个提供servlet能力的 http服务器
点击查看代码 package com.grady.diytomcat; import com.grady.diytomcat.handler.RequestHandler; import org.do ...
- 从代码到发包,一个程序全搞定!Gitea 推出软件包自托管功能 Package Registry
2022 年 7 月的最后一天,随着 Gitea 1.17.0 版本的正式发布,Gitea 开源社区推出了一项名为 Package Registry 的包管理功能,与 Gitea 代码仓库无缝集成,类 ...
- ProxySQL 配置ProxySQL
转载自:https://www.jianshu.com/p/212397a1be67 假定你已经对ProxySQL的架构有所了解.本文对ProxySQL的所有配置都是使用Admin管理接口完成的,该管 ...
- 现有rabbitmq集群添加新节点,移除旧节点(可以作为rabbitmq集群迁移使用)
原有集群安装步骤:https://www.cnblogs.com/sanduzxcvbnm/p/15797788.html 1.拉取镜像 集群中新节点需要执行 docker pull rabbitmq ...
- linux系统排查数据包常用命令
1.查看当前系统中生效的所有参数 sysctl -a 2.统计处于TIME_WAIT状态的TCP连接数 netstat -ant|grep TIME_WAIT|wc -l 3.统计TCP连接数 net ...
- 分布式存储系统之Ceph集群状态获取及ceph配置文件说明
前文我们了解了Ceph的访问接口的启用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16727620.html:今天我们来聊一聊获取ceph集群状态和 ...
- 220722 T2 序列(ST表+分治)
题目描述 小 B 喜欢玩游戏. 有一天,小 B 在玩一个序列上的游戏,他得到了正整数序列{ai}以及一个常数c . 游戏规则是,玩家可以对于每一个ai 分别加上一个非负整数x ,代价为 x2,完成所有 ...
- 在CentOs7虚拟机Linux离线安装mysql5.6(亲测可用)
在该博主博客的的基础上进一步改进:https://blog.csdn.net/zhousq8929/article/details/117223255 文章目录 1.在官网下载mysql-5.6.36 ...
- Silky微服务框架之服务引擎
构建服务引擎 在注册Silky微服务应用一节中,我们了解到在ConfigureServices阶段,通过IServiceCollection的扩展方法AddSilkyServices<T> ...
- nginx.conf指令注释
nginx.conf指令注释 ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于C ...