母版报表类似于动态模板,您可以设计用于内容报表。这有助于用户创建共享常见元素(如页眉中的徽标或页脚中的网站链接)的报表。使用无法从内容报表修改的控件、代码、数据源和布局属性设计母版报表。
母版报表与模板的不同之处在于,每次执行报表时都会加载母版报表。因此,您可以修改母版报表,对母版报表所做的更改会自动显示在引用母版报表的任何报表中。
设计母版报表时,使用控件、代码、数据源和布局属性的方式与使用普通报表的方式相同。母版报表本身有效,可以在没有内容报表的情况下运行。若要防止最终用户修改母版报表,可以将该用户或组的文件权限设置为“只读”。
在 RDL 报表中,可以通过将母版报表另存为 RDLX 主文件来创建母版报表。然后,您可以将其像模板一样应用于内容报告。
将 RDL 报表转换为母版报表时,工具箱中将显示一个内容占位符控件。此控件定义用户可以在应用母版报表模板后添加内容的区域。
注意:在区域报表(基于代码的报表)中,有一个类似于母版报表的概念。但是,此处将在其他报表继承的标准报表中创建基报表类。有关详细信息,请参阅继承报告模板。
应用母版报表的报表是内容报表。内容报表本身无效,如果没有指定的母版报表,则无法运行。
当用户创建新报表并在其上设置母版报表时,设计视图实际上与母版报表的设计视图相反。由 ContentPlaceHolder 控件覆盖的任何报表控件在设计时在内容报表中不可见,但在运行时可见。这些是用户可以添加报表控件的唯一区域。
1.添加母版报表中不存在的元素。
2.添加母版报表中不存在的新数据源。
3.从母版报表中的数据源添加新数据集。
4.将图像添加到嵌入图像集合。
5.将参数添加到报表参数集合。
6.将任意数量的报表控件添加到母版报表指定的占位符矩形中。
7.修改报表名称和说明。
8.添加母版报表中不存在的新自定义代码。
1.修改或删除母版报表中存在的元素(禁用灰色区域)。
2.删除母版报表数据源。
3.删除母版报表数据集或修改其查询。
4.修改母版报表数据集的排序或筛选器。
5.从嵌入图像集合中删除图像。
6.从报表参数集合中删除参数。
7.修改母版报表的页边距或页面设置。
注意:母版报表中的代码隐藏在内容报表中,因此为了允许内容报表用户访问代码,母版报表开发人员必须提供信息。
这就是运行内容报告时在后台发生的情况。
1.活动报表加载内容报表。
2.加载程序分析内容报告上的主报告标记,并从资源解析程序请求主报告。
3.母版报表将加载到定义中。
4.在分析内容报表中的每个
ContentPlaceholder 时,它会在母版报表中查找相应的占位符,并将内容报表中的内容加载到其中。
5.数据源、数据集和字段将合并。如果存在冲突,母版报表具有更高的优先级。
6.主题已合并。如果存在冲突,母版报表具有更高的优先级。
7.内容报表中的报表属性将添加到母版报表的属性中。对于以下属性,内容报表在发生冲突时具有更高的优先级:
运行内容报表时,内容报表及其母版报表将组合在一起形成聚合报表定义。使用报表定义 API,可以在运行时将此聚合另存为没有母版报表或内容报表的第三个报表定义。将此聚合另存为普通报表定义(*.rdlx 文件)后,可以像编辑任何其他报表定义一样对其进行编辑。
共享母版报表具有本地母版报表的优点,此外还有: