1.分组统计

var
  I:integer;
  lCol: TcxGridDBColumn;
  csglink : TcxDataSummaryGroupItemLink;
  csg : TcxDataSummaryGroup;
  csgItem : TcxDataSummaryItem;

----------------------------------------------------------

begin

//给Grid添加一个新列 SECTION
   csg :=      cxgrdbtblvw_for_doctortv.DataController.Summary.SummaryGroups.Add;

//创建汇总项
 // csg.Links.Clear;
  lCol:= cxgrdbtblvw_for_doctortv.Columns[0];
  lcol.Caption := '';//此处用来设置分组的名称
//  lCol.Caption:= cxgrdbtblvw_for_doctortv.Columns[0].Caption;
  lCol.Visible := False; //设置不可见
  lCol.GroupIndex := 0; //设置按此列进行分组合计

csglink := csg.Links.Add;
  csglink.ItemLink := cxgrdbtblvw_for_doctortv.Columns[0];

cxgrdbtblvw_for_doctortv.DataController.Groups.FullExpand;
  cxgrdbtblvw_for_doctortv.OptionsView.Footer := true;
  cxgrdbtblvw_for_doctortv.OptionsView.GroupFooters:= gfVisibleWhenExpanded;

for i := 0 to qry_for_tongji.FieldCount-1 do
  begin
    if i > 2 then
    begin
      cxgrdbtblvw_for_doctortv.Columns[i].Summary.groupkind := skSum;
      cxgrdbtblvw_for_doctortv.Columns[i].Summary.groupFormat := ':0';
      csgitem := csg.SummaryItems.Add;
      csgitem.ItemLink := cxgrdbtblvw_for_doctortv.Columns[i];   //汇总字段1
      csgitem.Kind := skSum;
      csgItem.Format := '#,0.00;-#,0.00; #';
      csgItem.Position := spFooter;
    end;
    if i = 1 then
    begin
      cxgrdbtblvw_for_doctortv.Columns[i].Summary.groupkind := skSum;
      cxgrdbtblvw_for_doctortv.Columns[i].Summary.groupFormat := ':0';
      csgitem := csg.SummaryItems.Add;
      csgitem.ItemLink := cxgrdbtblvw_for_doctortv.Columns[i];   //汇总字段1
      csgitem.Kind := skMin;
      csgItem.Format := '合计:';
      csgItem.Position := spFooter;
    end;
  end;

cxgrdbtblvw_for_doctortv.OptionsView.GroupSummaryLayout := gslAlignWithColumnsAndDistribute;
  dxbrbtn4.Enabled := True;

end;

2.添加footer的函数

procedure Tfrmtongji.CreateSumFooter(cxTableView: TcxGridDBTableView;
  const fieldList: string);
var
  i: Integer;
  f: TcxGridDBTableSummaryItem;
  l: TStringList;
begin
  l := TStringList.Create;
  l.DelimitedText := fieldList;
  l.Delimiter := ',';
  cxTableView.OptionsView.Footer := True;
  for i := 0 to cxTableView.ColumnCount - 1 do
  begin
    if l.IndexOf(cxTableView.Columns[i].DataBinding.FieldName) <> -1 then
    begin
      f := (cxTableView.DataController.Summary.FooterSummaryItems.Add) as TcxGridDBTableSummaryItem;
      f.FieldName := cxTableView.Columns[i].DataBinding.FieldName;
      f.Column := cxTableView.Columns[i];
      if (f.FieldName <> '医师编码') and (f.FieldName <> '医师名称') and (f.fieldName <> '科室名称') then
      begin
          f.Kind := skSum;
          f.Format := '#,0.00;-#,0.00; #';
      end
      else if (f.FieldName = '医师编码')  then
      begin
        f.Kind := skcount;
        f.Format := '合计:';
      end;
    end;
  end;
  l.Free;
end;

3.手工添加footer

A:先手动添加一个column,然后设置所添加footer的column,然后就可以在ongettext()中添加 AText := '合计';

在Footer的第一列显示[合计:]  
  加一个Summary项,Column设为Grid的第一列,Kind设为skNone  
  在该Summary项的OnGetText事件中,输入:  
  procedure   TFormExpense.tvExpenseTcxGridDBDataControllerTcxDataSummaryFooterSummaryItems2GetText(  
      Sender:   TcxDataSummaryItem;   const   AValue:   Variant;   AIsFooter:   Boolean;  
      var   AText:   String);  
  begin  
      AText   :=   '合计:';  
  end;  
   
  按条件汇总:  
  在TableView的DataController->Summary->FooterSummary->OnSummary事件中,输入:  
  procedure   TFormExpense.tvExpenseDataControllerSummaryFooterSummaryItemsSummary(  
      ASender:   TcxDataSummaryItems;   Arguments:   TcxSummaryEventArguments;  
      var   OutArguments:   TcxSummaryEventOutArguments);  
  begin  
      //得到字段名   TcxDBDataSummaryItem(Arguments.SummaryItem).FieldName;  
      if   (ASender.DataController.Values[Arguments.RecordIndex,   tvExpenseLevel.Index]   >   1)       //只统计Level列=1的值  
          and   (TcxDBDataSummaryItem(Arguments.SummaryItem).Kind   =   skSum)   then  
          OutArguments.Value   :=   0; //Level   >   1的统计值设为0

本文转自鹅倌51CTO博客,原文链接: http://blog.51cto.com/kaixinbuliao/979236,如需转载请自行联系原作者

cxgrid实现分组统计和添加Footer相关推荐

  1. STATA学习笔记:分组统计和分组回归

    STATA学习笔记:分组统计和分组回归 1. 分组统计 (1)对一个类别变量进行统计时 tabulate命令 tabulate oneway //for one-way tables of frequ ...

  2. R语言ggplot2可视化:可视化堆叠的直方图、在bin中的每个分组部分添加数值标签、使用position_stack函数设置

    R语言ggplot2可视化:可视化堆叠的直方图.在bin中的每个分组部分添加数值标签.使用position_stack函数设置 目录

  3. R语言ggplot2可视化:可视化堆叠的直方图、添加每个分组的每个bin的计数标签、在堆叠直方图的bin中的每个分组部分添加数值标签

    R语言ggplot2可视化:可视化堆叠的直方图.添加每个分组的每个bin的计数标签.在堆叠直方图的bin中的每个分组部分添加数值标签 目录

  4. R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值、标准偏差)实战(dot plot)

    R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值.标准偏差)实战(dot plot) 目录 R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加 ...

  5. R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值、中位数)实战(dot plot)

    R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值.中位数)实战(dot plot) 目录 R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均 ...

  6. MySQL分组查询—添加分组后筛选

    添加分组后的筛选:HAVING 案例1: 查询哪个部门的员工个数>2 SELECT COUNT(*), department_id FROM employees GROUP BY departm ...

  7. 【文献管理】JabRef使用教程、建立文献库、分组、添加文献、jabref推送到tex中

    1.新建文献库 新建一个库,就是新建一个bib文件,保存本次所有的文献. 在哪建库? 1)基本上是每次写论文的时候,在tex文件的同目录下,新建一个bib,保存本次论文使用的参考文献 2)在学习某个领 ...

  8. MySQL分组查询—添加筛选的总结

    分组查询中的筛选条件分为两类: 分类 数据源 关键字 位置 分组前筛选 原始表 WHERE GROUP BY 子句的前面 分组后筛选 分组后的结果集 HAVING GROUP BY 子句的后面 分组函 ...

  9. MySQL分组查询—添加排序

    案例: 查询每个部门每个工种的员工的平均工资,并且按平均工资的高低排列 排序查询放在最后 SELECT AVG(salary) a, department_id, job_id FROM employ ...

最新文章

  1. vs2008打开aspx设计界面无响应问题解决方法
  2. Prism for WPF初探(构建简单的模块化开发框架)
  3. Deepin系统安装
  4. RHCE实验:Linux下基于xinetd的访问控制
  5. Apache24 + wsgi + Flask on Python3.8部署实践
  6. [75] Making arrangements
  7. 59、crontab用法简介
  8. java获取整点与凌晨的时间戳
  9. bigdecimal 平均数_MapReduce实例-必须用Combine--求平均数
  10. 支付宝支付php代码示例,Laravel使用支付宝进行支付的示例代码
  11. 宝塔linux配置php环境扩展,CentOS7下宝塔面板php安装mssql扩展
  12. 团队作业9——展示博客(Beta版本)
  13. win7删除桌面快捷方式图片的小箭头
  14. 后台管理系统--毕业设计02
  15. easyrecovery15新版绿色序列号数据恢复软件
  16. 解决SpringMVC的GET请求中文乱码
  17. 1.1微信支付之现金红包 - Java 开发
  18. 如何结决PDF中的文字无法复制或选中(使用Adobe Acrobat X Pro转换双重PDF)
  19. 电影《终结者2018》
  20. 2021年Java面试心得:java短信模板设计

热门文章

  1. vmware克隆Centos6.4虚拟机网卡无法启动问题
  2. 2017云栖大会·杭州峰会:《在线用户行为分析:基于流式计算的数据处理及应用》之《数据可视化:构建实时动态运营数据分析大屏》篇...
  3. TODO:Go语言goroutine和channel使用
  4. Hazelcast集群服务(2)——Hazelcast基本配置
  5. 《深入理解java内存模型》学习整理1
  6. 认清SQL_Server_2005的基于行版本控制的两种隔离级别
  7. 超级简单:一步一步教你创建一小型的asp.net mvc 应用程序
  8. MS SQL SERVER中备份所有数据库
  9. 软件问题造成的经济损失案例_公司印章管理使用哪些行为会造成法律风险隐患...
  10. Nacos源码Notifier异步更新