可以通过数据绑定来实现  通过union all 来实现数据库

SELECT * FROM v3_pay_list2 where ( (ought_date >= '2012-12-06') and (ought_date <'2013/9/16 0:00:00') and (corp_id = '0001'))

union all select 'XXXXXXXXXX', corp_id,dep_id,dep_name,vendor_id,'','',  sum(amt),'','',vendor_pay,vendor_approval from (select * from v3_pay_list where ( (ought_date >= '2012-12-06') and (ought_date <'2013/9/16 0:00:00') and (corp_id = '0001')) ) u1 group by corp_id,dep_id,dep_name,vendor_id,vendor_pay,vendor_approval

union all select 'YYYYYYYYYY', corp_id,dep_id,dep_name,'Z','','',sum(amt),'','',vendor_pay,vendor_approval  from (select * from v3_pay_list where ( (ought_date >= '2012-12-06') and (ought_date <'2013/9/16 0:00:00') and (corp_id = '0001')) ) u2 group by corp_id,dep_id,dep_name,vendor_pay,vendor_approval

union all select '','','ZZZZZZZZZZ','','','','',sum(amt),'','',max(vendor_pay),max(vendor_approval) from (select * from v3_pay_list where ( (ought_date >= '2012-12-06') and (ought_date <'2013/9/16 0:00:00') and (corp_id = '0001'))) u3  having sum(amt) is not null  order by dep_id ,vendor_id ,compare_list_id

查出的结果类似于:

这样的结果集 然后在Gridview  OnRowDataBound 事件中进行绑定修改:

 protected void dgResult_ItemDataBound(object sender, DataGridItemEventArgs e)
{
//设置datagrid的颜色
e.Item.BackColor = CommonTools.getDGRowColor(e.Item.ItemIndex + 1); //设置小计和合计
DataRowView drv = (DataRowView)e.Item.DataItem;
if (drv != null)
{
if (drv["compare_list_id"].ToString().Trim().Equals("XXXXXXXXXX"))
{
e.Item.BackColor = CommonTools.SubRowColor;
e.Item.Cells[0].Text = "小计:";
e.Item.Cells[0].ColumnSpan = 5;
for (int i = 1; i < 5; i++)
e.Item.Cells.RemoveAt(1);
e.Item.Cells[0].HorizontalAlign = HorizontalAlign.Right;
e.Item.Cells[1].HorizontalAlign = HorizontalAlign.Right;
e.Item.Cells[2].Text = " ";
e.Item.Cells[3].Text = " ";
}
else if (drv["compare_list_id"].ToString().Trim().Equals("YYYYYYYYYY"))
{
e.Item.BackColor = CommonTools.TotalRowColor;
e.Item.Cells[0].Text = "合计:";
e.Item.Cells[0].ColumnSpan = 5;
for (int i = 1; i < 5; i++)
e.Item.Cells.RemoveAt(1);
e.Item.Cells[0].HorizontalAlign = HorizontalAlign.Right;
e.Item.Cells[1].HorizontalAlign = HorizontalAlign.Right;
e.Item.Cells[2].Text = " ";
e.Item.Cells[3].Text = " ";
}
else if (drv["dep_id"].ToString().Trim().Equals("ZZZZZZZZZZ"))
{
e.Item.BackColor = CommonTools.TotalRowColor;
e.Item.Cells[0].Text = "总计:";
e.Item.Cells[0].ColumnSpan = 5;
for (int i = 1; i < 5; i++)
e.Item.Cells.RemoveAt(1);
e.Item.Cells[0].HorizontalAlign = HorizontalAlign.Right;
e.Item.Cells[1].HorizontalAlign = HorizontalAlign.Right;
e.Item.Cells[2].Text = " ";
e.Item.Cells[3].Text = " ";
}
else
{
e.Item.Cells[1].Text = CommonTools.TrimZeroLeft(e.Item.Cells[1].Text.Trim());
}
}
}

  

实现对数据进行分组小计并计算合计的实例 asp.net的更多相关文章

  1. PB gird类型数据窗口 设置分组、分组小计、合计

    今天遇到一个需求,gird表格数据如下:  部门  类型 数据   A  类型1  1  A  类型2  2  B  类型1  3  B  类型2  4   合计 10 实际需要显示的结果为:  部门 ...

  2. Oracle分组小计、总计示例(grouping sets的使用)

    1.首先创建一个表 create table TE ( ID        VARCHAR2(2), T_CODE    VARCHAR2(4), T_NAME    VARCHAR2(4), T_A ...

  3. vue 动态合并单元格、并添加小计合计功能

    1.效果图 2.后台返回数据格式(平铺式) 3.后台返回数据后,整理所需要展示的属性存储到(items)数组内 var obj = { "id": curItems[i].id, ...

  4. SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,总计(合计),小计

    版权声明:本文为博主原创文章,未经博主允许不得转载.本人观点或有不当之处,请在评论中及时指正,我会在第一时间内修改. https://blog.csdn.net/aiming66/article/de ...

  5. SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,合计,小计

    表结构: CREATE TABLE [dbo].[Students]( ,) NOT NULL, ) NULL, [Sex] [int] NOT NULL, ) NULL, ) NULL, , ) N ...

  6. Druid数据迁移小计

    Druid数据迁移小计 Druid 官方网站上讲了相关的 Dump Segment 和 Insert Segment 相关的功能,但是经过测试这些功能都不好用,报 Guice 的依赖错误,懒得找具体原 ...

  7. 每日学习心得:SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)

    2013-8-20 1.    SQL查询表的行列转换/小计/统计(with  rollup,with cube,pivot解析) 在实际的项目开发中有很多项目都会有报表模块,今天就通过一个小的SQL ...

  8. 用SQL实现统计报表中的"小计"与"合计"的方法详解

    本篇文章是对使用SQL实现统计报表中的"小计"与"合计"的方法进行了详细的分析介绍,需要的朋友参考下   客户提出需求,针对某一列分组加上小计,合计汇总.网上找 ...

  9. SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)

    SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析) 2013-8-20 1.    SQL查询表的行列转换/小计/统计(with  rollup,with ...

随机推荐

  1. 【高精度】【找规律】Gym - 101243B - Hanoi tower

    题意:给你一个经典的汉诺塔递归程序,问你最少几步使得三个柱子上的盘子数量相同.(保证最开始盘子数量可以被3整除) 规律:ans(n)=2^(2*n/3-1)+t(n/3). t(1)=0. t(n)= ...

  2. 【FFT卷积】BZOJ3527-力

    [题目大意] [思路] 很好这很FFT…… 想了半天也没明白到底什么是卷积∑的上下界,我当初学的时候没说一定要从0开始啊quq 我还是背不出FFT的模板我要狗带了 我上面写的什么乱七八糟的,要什么数学 ...

  3. 使用织梦开源的分词算法库编写的YII获取分词扩展

    在编辑文章中,很多时候都需要自动根据文章内容获取关键字的功能,因此,本文主要是说明如何在yii中使用织梦开源的分词算法编写一个独立的扩展,可以在不同的模块中使用,步骤如下: 1 到这里下载其他朋友整理 ...

  4. iOS中深拷贝、浅拷贝和retain的区别

    浅拷贝:浅拷贝是对object对象的指针拷贝,让指针指向同一块内存地址,“对象永远只有一个",浅拷贝使对象的引用计数器+1.代码如下: 可以看出不可变字符串的指针指向了同一地址,并没有重新开 ...

  5. Java并发包之闭锁/栅栏/信号量(转)

    本文转自http://blog.csdn.net/u010942020/article/details/79352560 感谢作者 一.Java多线程总结: 描述线程的类:Runable和Thread ...

  6. mq组件介绍

    作者:Jaskey Lam链接:https://zhuanlan.zhihu.com/p/25069846来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. RocketM ...

  7. java多线程之同一个锁和分离锁

    1.对集合/共享对象的读写方法同一个锁,故无法实现读写并行.典型的就是arrayblockingQueue.数组阻塞队列 2.对同一个数据的读写方法采用分离锁,则可以实现读写并行.典型的就是linkB ...

  8. laravel的 array 函数

    代码如下:  routes.php文件 // 获⃣取⃣数⃣组⃣的⃣第⃣一⃣个⃣ Route::get('/helper', function () { $arr = [1, 2, 4]; return ...

  9. 关于使用Android新版Camera即Camera2的使用介绍 暨解决Camera.PreviewCallback和MediaRecorder无法同时进行

    新的相机API也就是Camera2是在Android 5.0引进的.通常情况下,我们都是使用Android旧的相机API,纵然在Android Studio里老是提示已经废弃,但是只要都能用,也就没必 ...

  10. Gulp新手入门教程

    Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 搭建web服务器 文件保存时自动重载浏览器 使用预处理器如Sass.LESS 优化资源,比如压缩CSS.JavaScript.压缩图片 ...