再使用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分组时自定义底部页脚求和功能的更多相关文章

  1. datagrid 扩展 页脚 合计功能

    效果图:合计信息展示在页脚中(showFooter:true) code: <!DOCTYPE html> <html> <head> <meta chars ...

  2. spring security采用自定义登录页和退出功能

    更新... 首先采用的是XML配置方式,请先查看  初识Spring security-添加security 在之前的示例中进行代码修改 项目结构如下: 一.修改spring-security.xml ...

  3. CSS + DIV 让页脚始终底部

    一 前言 经常设计页面时用到三层DIV,头DIV与脚DIV一般固定高度,而中间层DIV根据内容的多少,高度不定,我们经常希望但内容很少时,脚DIV保持在底部,当内容很多时,脚DIV被中间内容挤到下面, ...

  4. CSS + DIV 让页脚始终保持在页面底部

    来源:David's Blog     http://www.DavidQiu.com/ 文章链接:http://blog.davidqiu.com/post/2013-06-17/400517539 ...

  5. 【转载自W3CPLUS】如何将页脚固定在页面底部

    该文章转载自:W3CPLUS 大漠的文章 http://www.w3cplus.com/css/css-sticky-foot-at-bottom-of-the-page 以下为全文 作为一个Web的 ...

  6. html 设置页脚div一直在页面底部

    先上代码 <!DOCTYPE HTML> <html lang="en" style="height: 100%; width: 100%;" ...

  7. 将HTML页面页脚固定在页面底部(多种方法实现)

    当一个HTML页面中含有较少的内容时,Web页面的footer部分随着飘上来,处在页面的半腰中间,给视觉效果带来极大的影响,接下来为大家介绍下如何将页脚固定在页面底部,感兴趣的朋友可以了解下 作为一个 ...

  8. bootstrap-table 页脚总计(自定义统计总数)

    •首先给table添加属性: showFooter: footer js代码如下: //初始化bootstrapTableinitBootstrapTable: function () { var o ...

  9. 如何将页脚固定在页面底部,4中方法 转载自:W3CPLUS

    原博客地址:http://www.w3cplus.com/css/css-sticky-foot-at-bottom-of-the-page 作为一个Web的前端攻城师,在制作页面效果时肯定有碰到下面 ...

  10. DIV+CSS:页脚永远保持在页面底部

    页脚永远保持在页面底部 有时候,我们用CSS创建一个高度自适应布局,如何保证页脚(footer)在内容不超过一屏的情况下始终保持在布局最下方是一个比较头疼的事.我看过一些利用绝对定位的例子,但总感觉不 ...

随机推荐

  1. 聊聊 asp.net core 认证和授权

    使用asp.net core 开发应用系统过程中,基本上都会涉及到用户身份的认证,及授权访问控制,因此了解认证和授权流程也相当重要,下面通过分析asp.net core 框架中的认证和授权的源码来分析 ...

  2. 数据仓库与hive

    数据仓库与hive hive--数据仓库建模工具之一 一.数据库.数据仓库 1.1 数据库 关系数据库本质上是一个二元关系,说的简单一些,就是一个二维表格,对普通人来说,最简单的理解就是一个Excel ...

  3. Odoo自建应用初步总结(一)

    学习了<Odoo快速入门与实践 Python开发ERP指南>(刘金亮 2019年5月第1版 机械工业出版社)第6章自建应用入门后进行一下总结. 因为本书作者使用Odoo11,而目前最新版本 ...

  4. Django 聚合查询 分组查询 F与Q查询

    一.聚合查询 需要导入模块:from django.db.models import Max, Min, Sum, Count, Avg 关键语法:aggregate(聚合结果别名 = 聚合函数(参数 ...

  5. SpringSecurity基本使用

    SpringSecurity web 安全管理框架 需要依赖多 shiro 轻量 SSM+Shiro SpringBoot/SpringCloud+SpringSecurity 配置用户名密码 配置文 ...

  6. Python实验报告——第2章 Python语言基础

    实验报告 [实验目的] 1.熟悉在线编程平台. 2.掌握基本的 python 程序编写.编译与运行程序的方法. [实验条件] 1.PC机或者远程编程环境 [实验内容] 1.完成第二章实例01-07,实 ...

  7. ProxySQL 配置ProxySQL

    转载自:https://www.jianshu.com/p/212397a1be67 假定你已经对ProxySQL的架构有所了解.本文对ProxySQL的所有配置都是使用Admin管理接口完成的,该管 ...

  8. Portainer 安装MySQL并开启远程访问

    进入到 Portainer 页面,选择左边的 Containers 选项,单击上方的 Add container 按钮转到如图所示的页面: 1.在 Name 一栏中输入容器名字: 2.在 Image ...

  9. 重学Java泛型

    一丶从字节码层面看范型擦除 public class Type1<T> { private T t; } 使用jclasslib插件查看其字节码: 可以看到 t属性的类型是List< ...

  10. zabbix企业监控

    第一节.系统初始化 1.前期环境 主机名 IP地址 操作系统 备注 zabbix-10 192.168.2.10 CentOS Linux release 7.4 zabbix服务端 agent-15 ...