1. 概述
1.1 版本
报表服务器版本 | 功能变更 |
---|---|
11.0 | - |
1.2 应用场景
查询数据时,一般是根据参数值的不同展现不同的数据。但此处希望根据参数值的不同跳转到不同的模板,如下图所示:
1.3 实现思路
使用三张模板: 子模板1、子模板2、参数模板 实现。
1)准备好 子模板1、子模板2 并保存至相应路径。
2)新建模板,参数面板设置两个下拉框控件和一个查询按钮。
两个下拉框控件分别设置数据字典,其中一个下拉框的数据字典设置为「订单」表中的「订单ID」,另一个下拉框的数据字典自定义为两个子模板。
查询按钮设置点击事件,点击后跳转到选择的表,并传递订单ID。
2. 示例
2.1 准备子模板
1)子模板1:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Father1.cpt
或点击下载模板并保存到对应路径:Father1.cpt
2)子模板2:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Son.cpt
或点击下载模板并保存到对应路径:Son.cpt
2.2 设计参数模板
1)点击菜单栏「文件>新建普通报表」,如下图所示:
2)点击参数面板的编辑按钮,进入参数面板编辑界面,向参数面板中拖入两个标签控件,两个下拉框控件和一个查询按钮。如下图所示:
3)选中右侧的「label0」,点击「属性」,设置控件值为字符串「订单ID:」;同理,设置「label1」的控件值为字符串「查看表:」。
如下图所示:
4)选中右侧的「comBox0」,点击「属性」,设置控件名称为「orderID」;同理,设置「comBox1」的控件名称为「cptName」。
如下图所示:
5)选中右侧的「orderID」,点击「属性」,点击数据字典旁的「... 」按钮,设置数据字典,类型设置为「数据库表」,数据库为「FRDemo」,选择数据库表为「订单」,实际值和显示值都为「订单ID」。如下图所示:
6)选中右侧的「cptName」,点击「属性」,点击数据字典旁的「... 」按钮,设置数据字典,类型设置为「自定义」,实际值为报表路径,Father1.cpt 对应显示值为:订单,Son.cpt 对应显示值为:订单明细。如下图所示:
7)选中右侧的「formSubmit0」,点击「事件」,点击「+」按钮,设置查询按钮点击事件,如下图所示:
JS 代码如下:
var orderID = this.options.form.getWidgetByName("orderID").getValue();
var cptName = this.options.form.getWidgetByName("cptName").getValue();
window.location = "${servletURL}?viewlet=" + cptName + "&ID="+ orderID;
注1:子报表名称包含中文时第三行代码需要使用 encodeURI() 转码函数,代码如下:
window.location = "${servletURL}?viewlet=" + encodeURI(cptName) + "&ID=" + orderID;
注2:如果子报表为填报报表,需要在第三行代码的 cptName 后增加 "&op=write",代码如下:
window.location = "${servletURL}?viewlet=" + cptName + "&op=write" + "&ID=" + orderID;
注3:如果希望在新窗口打开,第三行代码修改如下:
window.open("${servletURL}?viewlet=" + cptName + "&ID=" + orderID,"_blank")
2.2 效果预览
2.2.1 PC 端
保存模板,点击「分页预览」,效果如 1.2 节所示。
2.2.2 移动端
不支持移动端。
3. 下载模板
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\根据参数查看不同报表.cpt。
点击下载已完成模板:根据参数查看不同报表.cpt