开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 3249|回复: 0

在XtraReport中实现分组中的行号从新计算

[复制链接]

0

精华

10

贡献

38

赞扬

实习版主

帖子
18
软币
158
在线时间
10 小时
注册时间
2013-9-30
发表于 2015-3-18 12:47:25 | 显示全部楼层 |阅读模式

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

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


回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-22 20:40

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表