cxgrid实现分组统计和添加Footer
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相关推荐
- STATA学习笔记:分组统计和分组回归
STATA学习笔记:分组统计和分组回归 1. 分组统计 (1)对一个类别变量进行统计时 tabulate命令 tabulate oneway //for one-way tables of frequ ...
- R语言ggplot2可视化:可视化堆叠的直方图、在bin中的每个分组部分添加数值标签、使用position_stack函数设置
R语言ggplot2可视化:可视化堆叠的直方图.在bin中的每个分组部分添加数值标签.使用position_stack函数设置 目录
- R语言ggplot2可视化:可视化堆叠的直方图、添加每个分组的每个bin的计数标签、在堆叠直方图的bin中的每个分组部分添加数值标签
R语言ggplot2可视化:可视化堆叠的直方图.添加每个分组的每个bin的计数标签.在堆叠直方图的bin中的每个分组部分添加数值标签 目录
- R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值、标准偏差)实战(dot plot)
R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值.标准偏差)实战(dot plot) 目录 R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加 ...
- R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值、中位数)实战(dot plot)
R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值.中位数)实战(dot plot) 目录 R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均 ...
- MySQL分组查询—添加分组后筛选
添加分组后的筛选:HAVING 案例1: 查询哪个部门的员工个数>2 SELECT COUNT(*), department_id FROM employees GROUP BY departm ...
- 【文献管理】JabRef使用教程、建立文献库、分组、添加文献、jabref推送到tex中
1.新建文献库 新建一个库,就是新建一个bib文件,保存本次所有的文献. 在哪建库? 1)基本上是每次写论文的时候,在tex文件的同目录下,新建一个bib,保存本次论文使用的参考文献 2)在学习某个领 ...
- MySQL分组查询—添加筛选的总结
分组查询中的筛选条件分为两类: 分类 数据源 关键字 位置 分组前筛选 原始表 WHERE GROUP BY 子句的前面 分组后筛选 分组后的结果集 HAVING GROUP BY 子句的后面 分组函 ...
- MySQL分组查询—添加排序
案例: 查询每个部门每个工种的员工的平均工资,并且按平均工资的高低排列 排序查询放在最后 SELECT AVG(salary) a, department_id, job_id FROM employ ...
最新文章
- vs2008打开aspx设计界面无响应问题解决方法
- Prism for WPF初探(构建简单的模块化开发框架)
- Deepin系统安装
- RHCE实验:Linux下基于xinetd的访问控制
- Apache24 + wsgi + Flask on Python3.8部署实践
- [75] Making arrangements
- 59、crontab用法简介
- java获取整点与凌晨的时间戳
- bigdecimal 平均数_MapReduce实例-必须用Combine--求平均数
- 支付宝支付php代码示例,Laravel使用支付宝进行支付的示例代码
- 宝塔linux配置php环境扩展,CentOS7下宝塔面板php安装mssql扩展
- 团队作业9——展示博客(Beta版本)
- win7删除桌面快捷方式图片的小箭头
- 后台管理系统--毕业设计02
- easyrecovery15新版绿色序列号数据恢复软件
- 解决SpringMVC的GET请求中文乱码
- 1.1微信支付之现金红包 - Java 开发
- 如何结决PDF中的文字无法复制或选中(使用Adobe Acrobat X Pro转换双重PDF)
- 电影《终结者2018》
- 2021年Java面试心得:java短信模板设计
热门文章
- vmware克隆Centos6.4虚拟机网卡无法启动问题
- 2017云栖大会·杭州峰会:《在线用户行为分析:基于流式计算的数据处理及应用》之《数据可视化:构建实时动态运营数据分析大屏》篇...
- TODO:Go语言goroutine和channel使用
- Hazelcast集群服务(2)——Hazelcast基本配置
- 《深入理解java内存模型》学习整理1
- 认清SQL_Server_2005的基于行版本控制的两种隔离级别
- 超级简单:一步一步教你创建一小型的asp.net mvc 应用程序
- MS SQL SERVER中备份所有数据库
- 软件问题造成的经济损失案例_公司印章管理使用哪些行为会造成法律风险隐患...
- Nacos源码Notifier异步更新