一、基本概念:
XtraReports 中的每个报表都由 XtraRepot 类的一个实例表示,或者由该类的子类来表示(这种情况更常见)。 因此,每个报表都作为带区的容器使用,而每个带区中都包含报表控件。XtraReports 中的每个报表都可以被绑定到数据,或者不绑定。 要创建绑定报表,则首先要把报表绑定到数据源,然后指定每个报表控件的数据绑定选项。报表控件、带区 和报表自身的所有大小和位置,都以报表内相同的单位度量。 度量单位由报表的 XtraReport.ReportUnit 属性指定,可以设置为下列类型之一:百分之一英寸:当 ReportUnit 属性值被设置为 ReportUnit.HundredthsOfAnInch 时使用。 十分之一毫米:当 ReportUnit 属性值被设置为 ReportUnit.TenthsOfAMillimeter 时使用。
二、页面构建时用到的事件
Before Print:
在 预览/打印/导出 报表期间,在 XRControl 对象创建其图像之前,XRControl.BeforePrint 事件发生,主要用于以程序方式改变报表的属性、带区的属性、以及存放在 DetailBand 细节带区中的控件的属性。
在此事件中可以执行大部分任务 (例如改变 XRControl.Visible、XRControl.BackColor、XRControl.BorderColor 以及其他属性),可以被轻松执行,而 无需编写代码,只是使用 格式设置规则。 此外,BeforePrint 事件可以被接管,从而重新指派控件的样式,并且调整其 XRControl.LocationF 属性。
在 BeforePrint 事件中,可以使用 XtraReportBase.GetCurrentColumnValue 方法为数据绑定控件获取数据列的当前值。 注意,在此事件中,修改控件的绑定信息就太迟了。 因此,对于数据绑定控件,可以只调整其静态文本。
示例代码:
private void xrLabel1_BeforePrint(object sender, PrintEventArgs e)
{
if (Convert.ToDouble(this.GetCurrentColumnValue("UnitPrice")) > 30) {
XRControl control = this.FindControl("xrLabel1", true);
control.LocationF = new PointF(15F, 15F);
control.Styles.Style = this.StyleSheet[0];
}
}
三、报表结构
整个报表是由多个绑定带区组成,绑定带区如下:
绑定带区 |
说明 |
TopMarginBand |
每个页面上面都显示的空白(天头),在PageHeaderBand或者ReportHeaderBand上面 |
ReportHeaderBand |
在报表起始位置(报表头), 此带区被设计用于显示某些概述信息,例如报表的封面。 |
PageHeaderBand |
在每个页面的上方(页眉),在TopMarginBand或者ReportHeaderBand下方 |
GroupHeaderBand |
在每组的起始位置,或者在分跨多个页时而位于组的上方(分组标头)。 此带区指定分组标准,并被用于显示每组记录起始位置的信息 |
DetailBand |
在页面上所有其他带区之间(细节)。 此带区每行只显示绑定数据源中的一条记录,或者当没有为报表指定数据源时而简单地持有非绑定控件。 |
DetailReportBand |
在DetailBand的下方(从表),被设计用于在创建主/从报表时持有从报表 |
GroupFooterBand |
在每组的结束位置,或者在分跨多个页时而位于组的下方(分组脚注)。 此带区主要被设计用于显示每组的总结信息。 |
ReportFooterBand |
在报表结束位置(报表脚注)。 此带区被设计用于显示某些终极信息,例如报表总结。 |
PageFooterBand |
在每个页面的下方(页脚)在ReportFooterBand下方和BottomFooterBand上方,此带区被设计用于从之前页面接续的页码或表尾 |
BottomMarginBand |
每个页面底部的空白(地脚),在PageFooterBand的下方。 |
四、报表常用属性
属性 |
说明 |
BackColor |
设置报表控件 |