基准报表类似于一个动态模板,您可以在内容报表中使用基准报表。用户可以在基准报表中添加一些相同信息,比如公司徽标,公司链接地址等供其它报表使用。在基准报表中可以添加控件、代码、数据源,以及布局信息等,基准报表中的设置不能在内容报表中进行修改
基准报表不同于报表模板,它会在每次执行报表时加载。因此,您可以修改基准报表的设置,并且会自动应用到使用该基准报表的内容报表中。
基准报表的优点
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 文件)之后,可将其作为报表进行编辑。