如何在DevExpress XtraReport报表中实现分组行号从新计算

原创|其它|编辑:郝浩|2012-09-11 14:43:10.000|阅读 3057 次

概述:在使用XtraReport时会遇到要求自定义分组和行号的显示问题,本文详细分类介绍了所遇到的问题以及解决方法。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

最近在开发一个报表时(使用的是DevExpress报表控件XtraReports),遇到了 客户要求自定义分组和行号的显示问题,现在把我的解决方案和大家共享一下

1、当行号要求从1开始,在分组变化后不从新计算,这中情况比较好解决

直接在需要显示行号的控件的OnBeforePrint事件中做处理就行了,在事件中添加如下代码

((XRTableCell)sender).Text = string.Format("{0}",this.CurrentRowIndex+1);//CurrentRowIndex为报表的当前行号

这行代码也可以在客户自定义时,在设计器中放在需要显示行号的控件的Scripts属性下OnBeforePrint中。

显示的报表类似如下

group1
1
2
3
group2
4
5
group3
6
7
...

2、如果要是需要每个分组中得行号从1重新开始,需要使用如下方法(在设计期实现,如果要是在开发时实现可以定义一个两个全局变量来保存rowIndex和preGroupName)

添加Name为rowIndex、preGroupName的XRLabel控件,在需要显示序号得控件中,对OnBeforePrint添加如下代码

private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
string groupName = Convert.ToString(GetCurrentColumnValue("Category"));
if (groupName != ((XRLabel)preGroupName).Text)
{
((XRLabel)rowIndex).Text = "1";
((XRLabel)preGroupName).Text = groupName;
}
else
{
((XRLabel)rowIndex).Text=string.Format("{0}",Convert.ToInt32(((XRLabel)rowIndex).Text)+1);
}
((XRTableCell)sender).Text =((XRLabel)rowIndex).Text;
}

如果需要其他的分组的话,把 string groupName = Convert.ToString(GetCurrentColumnValue("Category"));中的Category改为需要分组的显示的字段名称。

显示的报表格式类似如下

group1
1
2
3
...
group2
1
2
...
group3
1
2
3



标签:DevExpress报表

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:转自博客园 作者 笑缘

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
XtraReports Suite

针对Windows Forms、ASP.NET、ASP.NET MVC、WPF,Silverlight和LightSwitch开发者的下一代跨平台报表方案

DevExpress Universal Subscription

优秀的界面控件开发包,帮助企业构建卓越应用!

DevExpress WPF Subscription

高效MVVM开发模式,WPF界面解决方案首选工具,帮助企业实现酷炫动效界面。

DevExpress Silverlight Controls

高性价比高实用性的Silverlight用户界面控件套包,拥有大量的示例和帮助文档,开发者能够快速上手!

DevExpress WinForms Subscription

为Windows Forms平台创建具有影响力的业务解决方案,高性价比WinForms界面控件套包。

title
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP