XtraReport学习笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

XtraReport
学习笔记
Jephy
2011/8/19
本文档是学习过程中所做笔记,对于更多深层次的知识还为了解清楚,有待大家共同学习研究。

目录
一、基本概念 (4)
二、页面构建时用到的事件 (4)
三、报表结构 (5)
四、报表常用属性 (6)
五、报表控件 (7)
1.W EB页面控件 (7)
2.报表设计时控件: (7)
六、报表类型 (8)
1.静态报表 (8)
2.表格报表 (8)
3.主从报表 (8)
4.多栏报表 (8)
5.交叉表报表 (9)
6.并列报表 (9)
7.D RILL-T HROUGH 报表 (9)
8.邮件合并报表 (9)
9.标签报表 (9)
七、报表数据源 (9)
1.数据源 (9)
2.绑定数据的方法 (10)
2.1.使用.NET 数据提供程序绑定报表 (10)
2.2.把报表绑定到List (10)
2.3.把报表绑定到XML 数据 (10)
八、数据绑定与报表预览 (10)
1.设计时绑定 (10)
2.运行时绑定 (11)
3.C HART控件绑定 (11)
九、数据呈现 (12)
1.数据分组与排序 (12)
2.数据筛选 (12)
2.1.在报表级筛选 (12)
2.2.在数据源级筛选 (13)
3.数据格式化 (13)
十、外观设置 (13)
1.外观属性 (13)
2.样式 (14)
2.1奇偶行样式 (14)
2.2.样式表 (14)
3.附条件格式设置 (14)
十一、交互导航 (14)
1.超链接 (14)
2.文档地图 (15)
十二、其他 (15)
十三、应用程序部署 (15)
XtraReport
一、基本概念:
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];
}
}
三、报表结构
整个报表是由多个绑定带区组成,绑定带区如下:
四、报表常用属性
五、报表控件
报表控件在Web应用程序中分为Web页面控件和报表设计控件1.Web页面控件
2.报表设计时控件:
六、报表类型
1.静态报表是简单呈现某些静态信息的报表。

这种报表通常不绑到数据源,
并且在一页上显示单个控件或一组控件。

如果需要多次重复相同的报表内容,那么使用XtraReportBase.DetailPrintCount属性。

2.表格报表是以表格形式呈现信息的报表。

这些信息被存储在报表的绑定数
据源中(也可以运行时从数据库中读取),并且通常此数据源不分层级 (例如,只包含一个数据表)。

使用 XRTable 控件,并且绑定表格的单元格来呈现数据源中的数据;
3.主从报表如果某个报表被用于显示分层级的数据源中的数据,则通常把它称
为主/从报表。

创建主/从报表的两种主要方法。

第一种方法:是以使用从报表带区为基础(使用DetailReportBand带区),当数据源包含主实例和从实例之间的 关系时,使用这种方法使用。

第二种方法:是创建两个不同的报表类,并且把从报表作为子报表而合并到主报表中(使用
XRSubReport控件,指定此控件的ReportSource属性为子报表)。

4.多栏报表是以多个列或行(取决于当前的多栏设置) 呈现数据的报表。


种报表是有用的,例如,当每个细节带区都只显示少量数据、并且需要在一列的右侧打印下一个细节带区的外观时,这样就能充分利用整个页面宽度。

此外,当创建有相同内容的卡片或邮寄地址签、并且需要在许多报表页面上打印大量相同尺寸的卡片时,多栏报表也是有用的。

由于多栏布局主要影响报表的细节带区,因此可以通过Detail带区的
DetailBand.MultiColumn属性来指定多栏模式。

要启用多栏模式,则把
MultiColumn.Mode属性设置为除去None之外的其他取值
栏数固定,栏宽度相同并且被自动计算。

为此,应该把MultiColumn.Mode属性设置为
eColumnCount,并把MultiColumn.ColumnCount属性设置为所需的栏数。

自动计算栏数,所有栏的宽度都是相同的固定宽度。

为此,应该把MultiColumn.Mode属性设置为
eColumnWidth,并且把MultiColumn.ColumnWidth属性设置为所需的栏宽度。

5.交叉表报表是以交叉表形式呈现信息的报表。

交叉表(或透视表) 类似于
简单的普通数据绑定表格,但是改为在单个表格中呈现多维的分层级的信息,并含有每行和每列的自动排序、计数、合计和累计。

使用XRPivotGrid控件,并为此控件指定数据源、绑定字段到列,同时要保证报表的数据源为NULL,如果两者使用相同的数据源,那么XRPivotGrid控件将被打印与数据源行数相同的次数。

6.并列报表在报表中显示两栏相同的或者不同的信息,主要依赖于
XRSubReport控件。

7.Drill-Through 报表类似于主从报表,但是子报表是通过超链接来访问的。

超链接的设置将在下面数据绑定部分介绍。

8.邮件合并报表试图创建e-mail 模板时,经常会遇到困难。

在这些模板中,
某些文本是不变的,某些字段(通常被使用预定义的标记括起来) 应该在创建文档时填充来源于数据库的数据。

此项功能也被称为邮件合并,并且使用XtraReports 可以轻松实现。

大体上,要创建嵌入字段,则需要把由[中括号]括起的数据字段名称插入到控件的文本中,如果在当前的数据上下文中,字段是有效的,那么当报表被预览或导出时,它将被替换为一个适当的数据值。

9.标签报表此报表与多栏报表相类似。

七、报表数据源
1.数据源
通过XtraReport对象的XtraReportBase.DataSource属性把它绑定到数据源,而与特定的数据源类型和所使用的数据绑定方法无关。

唯一的例外是
当使用XML 数据源时,需要指派到XtraReportBase.XmlDataPath属性,同时要求把XtraReportBase.DataSource属性设置为null。

2.绑定数据的方法
2.1.使用.NET 数据提供程序绑定报表
这种方法意味着数据被存储在数据库中。

使用已提供的两种数据适配器组件之一,就可以把报表绑定到这种数据:
OleDbDataAdapter,使用 OLE DB 访问公开的数据源;
SqlDataAdapter,被设计用于使用由 Microsoft SQL Server 7.0 或后续版本提供的数据源。

这些数据适配器都使用连接对象来绑定数据,并且能够生成包含数据表的DataSet对象。

然后通过把数据表 (或绑定到表的数据视图) 直接指派到XtraReportBase.DataSource属性,它们就可以被绑定报表。

也可以把生成的DataSet对象指派到XtraReportBase.DataSource属性,并且使用XtraReportBase.DataAdapter 属性来指定数据适配器的名称。

2.2.把报表绑定到List
在运行时刻创建的数据对象必须支持IList、ITypedList或
IBindingList接口,并且被指派到XtraReportBase.DataSource属性。

注意,你不需要创建自定义的数据源对象。

例如,可以在运行时刻使用填充了数据的DataTable 对象。

2.3.把报表绑定到XML 数据
这种方法使用存储在 XML 文件中的数据。

可以以两种方式之一来访问这种数据。

把XtraReportBase.DataSource 属性值设置为根据 XML 文件创建的数据集;直接把XML 文件指派到XtraReportBase.XmlDataPath属性。

八、数据绑定与报表预览
1.设计时绑定
在设计时绑定数据源,需要把相应的数据源添加到应用程序中,即在应用程
序中添加DataSet程序集,然后在报表设计界面,把报表的数据源指定到相应的数据集上,打开Field List字段列表,将相应的字段用鼠标拖到相应的控件上即可。

点击Preview 即可预览报表。

2.运行时绑定
在运行时绑定数据源,更具灵活性,它可以根据需要从数据库中读取有用的数据来呈现在报表上。

对于运行时绑定数据源,其数据绑定操作要在报表的构造函数中完成。

在报表设计器中只需把相应的控件放置好即可。

报表控件中都有一个DataBindings属性,此属性的Add方法可以把数据绑定到控件上。

示例代码:
Void DataBind()
{
DataSource=tb // tb为DataTable
xrLabel1.DataBinds.Add(”Text”,null,”Column1”);
xrLabel2.DataBinds.Add(”Text”,null,”Column2”,”FormatString:{0}”);
}
在报表的构造函数中调用以上方法就可以将数据绑定到xrLabel上,其中Add 方法有两个重载:
Control.DataBinds.Add(控件属性,数据源,绑定字段)
Control.DataBinds.Add(控件属性,数据源,绑定字段,格式化设置)
每个控件可绑定的属性可能有所不同,可以通过该控件的DataBinds属性来查看。

3.Chart控件绑定
Chart控件与PivotGrid控件都需要独立指定数据源,同时,如果这两个控件被放置Detail带区中,报表不能指定数据源,不然,该控件将被显示与报表数据源行数相同的次数。

对与Chart控件的数据绑定,要把相应字段绑定到对应的Series上,ArgumentDataMember为X轴绑定字段,ValueDataMembersSerializable为Y 轴字段。

一个图表中可以有多个Series,可以通过Series索引或者Name来找到相应的Series.Chart控件中Series集合表示图表,Titles集合是对应Series
的标题。

示例代码:
protected void DataBind()
{
string sqlStr = "select UnitPrice,ProductName from ProductSales group by ProductName,UnitPrice";
this.xrChart1.DataSource = helper.getDataTable(sqlStr);
this.xrChart1.Series[0].ArgumentDataMember = "ProductName";
this.xrChart1.Series[0].ValueDataMembersSerializable = "UnitPrice";
this.xrChart1.Series[0].Name = "Price";
this.xrChart1.Series[0].LegendPointOptions.PointView =
PointView.Argument;
his.xrChart1.Legend.Visible = false;
}
九、数据呈现
由于数据源提供方式分为设计时与运行时,所以数据呈现也有所不同。

对于运行时提供数据源的报表,分组、排序都需要通过代码添加到报表中,而设计时提供数据源则可以直接通过图形化界面进行设置。

1.数据分组与排序
运行时分组需要在数据绑定函数中加入如下代码:
this.GroupHeader1.GroupFields.Add(new
GroupField("StudentID",XRColumnSortOrder.Descending));
GroupField的两个参数分别为分组字段,排序方式。

2.数据筛选
2.1.在报表级筛选
在报表中添加Parameters属性中添加筛选参数,并设置筛选条件,在Web 页面上Parameters中的参数列表将被显示在ReportParameterPanel控件中,报表中添加参数以后,默认状态预览报表需要点击Submit后报表才被创建,若要不提供参数也创建报表,需要将报表的
RequestParameters属性设置为false。

2.2.在数据源级筛选
在数据级筛选数据,主要是通过SQL语句的where条件,要将Where条件的参数传递到报表类中,可以通过报表的构造函数,其他方式有待研究。

同时结合在报表级的数据筛选,可以方便点的在页面上呈现出需要的数据。

3.数据格式化
通过控件的FormatString属性可以根据需要设置相应的格式化输出样式。

通过控件的Summary属性来设置各种统计功能。

十、外观设置
1.外观属性
外观属性如下表:
2.样式
2.1奇偶行样式
它允许在视觉上把报表中连续的数据字段划分开,从而有更好的可读性。

要把这些样式应用于控件,则应该使用其XRControl.OddStyleName 和
XRControl.EvenStyleName 属性。

2.2.样式表
在设计时刻可以使用 Styles Editor(样式编辑器) 来管理报表的样式
表、定制样式表、存储到文件以及从文件中加载。

因此,可以创建多个
样式表,并且在设计时刻或运行时刻加载。

保存报表的样式表的方式有
两种。

第一种方式是保存为外部文件 (有 REPSS 扩展名),然后使用
XtraReport.StyleSheetPath 属性,以只读模式加载到报表 (这种方式
在如何:创建和存储报表样式表主题中进行了描述)。

第二种方式是
把样式表存储在报表内 (使用 XtraReport.StyleSheet属性),因此可
以按照需要进行修改,并和报表本身一起被保存。

3.附条件格式设置
通过控件的FormattingRuls属性设置格式化规则,当满足该规则时,将以定义的样式显示该行数据。

同一个报表的FormattingRules被放置在FormattingRulesSheet属性中。

十一、交互导航
1.超链接
示例代码:
为xrLabel添加超链接
xrLabel.DataBinds.Add(“NavigateUrl”,null,”Colunm”,”?i d={0}”);
解释:在报表已指定数据源的情况下(设计时或者运行时)可以用以上方法
对控件绑定NavigateUrl属性,同时格式化Url地址与要穿的的参数。

2.文档地图
在报表中若设置了Bookmark属性,报表将生成文档地图,在Web页面中用ReportDocumentMap控件来显示。

示例代码:
为xrPanel添加文档地图
xrPanel.DataBinds.Add(“Bookmark”,null,”Column”,”FormatString:{0}”);
十二、其他
不使用ReportToolBar来打印,导出报表。

步骤:
1.在web页面设置ReportViewer控件的ClientInstanceName属性(例如:viewer)
2.添加ASPxButton控件到web页面
3.点击ASPxButton控件的智能标签,取消AutoPostBack,点击Client-Side-Events;
4.在Click事件中添加如下代码
function(s, e) {
viewer.SaveToDisk(‘PDF’); //保存为PDF格式
viewer.Print(); //打印报表
}
十三、应用程序部署
Web应用程序发布之后,所应用的DevExpress中的dll文件不会被生成到应用程序下得Bin文件夹中,所以必须手动到Developer Express安装目录先的Source 文件夹中把应用程序中所引用的dll文件拷到应用程序中的Bin文件夹中,然后再把应用程序部署到服务器上。

否则,报表将不能正常显示,还要注意一点,在
设计报表时,不要指定打印机的类型,以免打印时出错(网上有人遇到过此问题)。

在本机将应用程序部署到IIS上,测试正常。

相关文档
最新文档