基准报表(Rdl)

基准报表类似于一个动态模板,您可以在内容报表中使用基准报表。用户可以在基准报表中添加一些相同信息,比如公司徽标,公司链接地址等供其它报表使用。在基准报表中可以添加控件、代码、数据源,以及布局信息等,基准报表中的设置不能在内容报表中进行修改

基准报表不同于报表模板,它会在每次执行报表时加载。因此,您可以修改基准报表的设置,并且会自动应用到使用该基准报表的内容报表中。

基准报表的优点

l 支持常见的报表功能,如添加页眉和页脚等。

l 修改基准报表之后,会自动应用到使用该基准报表的所有内容报表中,而无须单独修改每个报表的设置。

l 支持数据相关的修改,比如修改基准报表中的数据源之后,所有使用该基准报表的内容报表数据源也会自动改变。

l 创建代码、数据源、主题和页面布局等以实现应用程序或企业之间的共享。

l 隐藏了报表的复杂性,最终用户可以使用独立的设计器应用程序来创建内容报表。

设计基准报表

设计基准报表时,使用控件、代码、数据源和布局的方式与设计普通报表完全相同。若要防止最终用户修改基准报表,可以设置该文件为只读形式。

您可以基于Rdl报表布局基准报表,基准报表会被转换为一个 RDLX-master 格式的文件,然后您可以在内容报表中来使用它。

当您将Rdl报表布局报表转换为基准报表时,Visual Studio 工具箱中将出现一个ContentPlaceHolder 控件,该控件提供了供内容报表编辑的区域。

注意:在基于代码的区域报表中,有类似于基准报表的概念。然而,区域报表中你需要创建一个基准报表类,内容报表需要继承于某个基准报表。详细信息,请参阅继承报表模板

创建内容报表

报表中设置了基准报表的报表被称为内容报表,内容报表必须为其制定基准报表才能运行。

当用户创建一个新报表,并设置基准报表报表时,设计视图中显示的与基准报表刚好相反。在内容报表中用户只能将控件添加到 ContentPlaceHolder 控件所在的范围内,

设计内容报表时用户进行的操作

l 不能编辑基准报表中添加的元素。

l 不能编辑基准报表中添加的数据源。

l 可以在基准报表数据源中添加数据集。

l 可以在嵌入式图像集合中添加新图像。

l 可以在报表参数集合中添加新参数。

l 可以在 ContentPlaceHolder所在范围内添加任意数量的控件。

l 可以修改报表名称和说明。

l 可添加基准报表中不存在的自定义代码。

设计内容报表时用户不能进行的操作

l 修改或删除 (灰色区域) 基准报表中的元素。

l 删除基准报表数据源。

l 删除基准报表数据集或修改其查询语句。

l 修改基准报表数据集的筛选或排序设置。

l 从嵌入式图像集合中删除图像。

l 从报表参数集合中删除参数。

l 修改页边距或基准报表的页面设置。

注意:基准报表中的代码在内容报表中不可见,所以为了让内容报表用户可以访问代码,基准报表开发人员必须提供相关的信息。

运行时的事件序列

以下是您运行内容报表时所发生的事件。

1、ActiveReports 加载内容报表。

2、加载程序解析内容报表中基准报表标签中的设置,并发出加载基准报表的请求。

3、基准报表加载到定义中。

4、解析内容报表中的每个内容占位符,确定其与基准报表内容占位符的关系,并从内容报表中加载内容。

5、合并数据源、数据集和字段。在发生冲突的情况下,基准报表具有更高的优先级。

6、进行主题合并。在发生冲突的情况下,基准报表具有更高的优先级。

7、内容报表属性将被添加到基准报表中,在这种情况下,内容报表的以下属性具有更高的优先级:

l 报表说明

l 报表作者

l 报表自动刷新

l 报表自定义

l 报表语言

l 报表数据转化

l 报表数据 Schema

l 报表元素名称

l 报表数据元素样式

l 数据集筛选器

l 报表主题

l 报表代码

l 内容占位符控件内的所有内容

修改聚合报表定义

当您运行内容报表时,内容报表和其基准报表组合成聚合报表定义。使用 ReportDefinition API,您可以在运行时保存该聚合,并作为第三个报表定义。此聚合保存为普通的报表定义 (*.rdlx 文件)之后,可将其作为报表进行编辑。