Dev Express,一个非常优秀的报表控件。像其他报表一样,该报表也包括几个主要部分:Report Header,Page Header,Group Header,Detail,Group Footer,Page Footer和Report Footer共7个部分。,除此之外,我们还可以添加Detail Report,并同时添加与此相对应的Report Header/Footer。借助此功能可以实现多个Heaer与多个Detail相互交叉的效果!
一. 常见总结
CalculatedFile: 既可以用来计算两个Field/Parameter的值,也可以增加条件判断。在创建后Calculated Field之后,右键CalculatedField->Edit Expression,在打开的窗口中,可以看到其提供了许多丰富的功能,如:加,减,乘,除及合计等等常见功能!
Detail Report: 相当于一个新的report page,它可以有自己的ReportHeader,Detail及ReportFooter。有了Detail Report就意味着我们可以更加灵活地交叉多个Header与Detail而不用去使用Sub Report。
Sytle/Odd Style/Even Style:新建并批量使用样式。以XRLabel为例,可以在其Style属性中新建多个样式,如果当前Report页面中其他的XRLabel如果再使用相同的样式时,只需要从样式列表中选择相应的样式即可,减少了重复设置相同属性的繁琐过程!
Page Number:可以使用XRPageInfo控件。如要显示为:1 OF 1,则需要设置XRPageInfo控件的属性PageInfo为NumberOfTotal,且须将Format设置为:{0} OF {1}!
FormattingRules:主要通过对条件的设定来控制当前Band的显示隐藏及颜色等的变化!
Landscape: 在设计report时,主要用来修改report的布局,即横向或纵向。设置方法:在report page的空白处点击Properties,在属性窗口处找到Landscape,把其设为True即可!
二. 使用自定义的Summary
有时在进行GroupBy时需要对Summary的结果进行相加减或计算百分比,这时就需要用到自定义的Summary了。关于具体的使用如下所示,也可以参照该官方链接的解释:
1. 我有一个界面,如下所示,需要在C处计算出B占A+B的百分比:
2. 选择C处的XRLabel标签(假设我们此处用XRLabel来放置C的value),右键->属性->事件,找到以下内容,双击即可生成后台事件:
3. 修改上一步生成的事件处理过程为以下内容即可。
private void NoConsultVisitPercentage_SummaryGetResult(object sender, SummaryGetResultEventArgs e) { Decimal OVNum = Convert.ToDecimal(A.Summary.GetResult()); Decimal NCNum = Convert.ToDecimal(B.Summary.GetResult()); Decimal TotNum = OVNum + NCNum; if (OVNum > 0) { if (NCNum > 0) { Decimal d = NCNum * 100 / TotNum; e.Result = Decimal.Round(d, 2); e.Handled = true; } else { e.Result = 100; e.Handled = true; } } else { e.Result = 0; e.Handled = true; } }
PS. 在使用自定义Summry之前,一定要设置XRLabel的属性为Custom,否则不会有任何效果,具体如下所示: