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

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

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

><script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值