历史版本4 :JS实现子窗口填报后刷新父页面 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 需求描述编辑

当多窗口填报时,希望子窗口填报成功后,数据能马上在父窗口中显示出来,通常采用的方法是刷新父窗口,但现在触发刷新事件是在子窗口中,而父窗口又无法获取子窗口填报成功的事件。要如何设置才能实现子窗口刷新父页面呢?

222

2. 解决方案编辑

打开填报的子模板,在子模板中添加填报成功事件。

3. 示例编辑

3.1 打开模板

打开子模板:%FR_HOME%\\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\Hyperlink6.cpt

3.2 添加填报成功事件

在打开的子模板中,点击菜单模板>模板Web属性>填报页面设置,选择为该模板单独设置,添加填报成功事件,如下图所示:

222

JS代码如下:

window.parent.location.reload();

3.3 效果预览

打开主模板:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\Hyperlink5.cpt

点击订单ID,在新对话框中修改数据,点击提交后,即可自己刷新主模板,效果如描述中所述。

4. 示例-保留父页面查询参数编辑

4.1 父模板添加查询参数

打开父模板:%FR_HOME%\\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\Hyperlink5.cpt

1)数据集ds1修改为:SELECT * FROM 订单 where 1=1 ${if(len(客户ID)=0,""," and 客户ID='"+客户ID+"'")}

222

2)编辑参数面板,添加下拉控件客户ID和查询按钮,并配置客户ID控件的数据字典:

222

3)点击参数面板空白处,将点击查询前不显示报表内容前面的勾去掉:

222

4)回到单元格设计界面,编辑A2单元格添加的超级链接-网络报表1,将网络报表1窗口中的继承报表的参数前面的勾选上:

222


4.2 修改子模板js代码

打开子模板:%FR_HOME%\\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\Hyperlink6.cpt

点击菜单模板-模板Web属性-填报页面设置,编辑之前添加好的填报成功事件,在事件设置窗口的参数面板添加一个参数ID,值为公式:$客户ID

注:公式中的参数客户ID为父模板中的下拉框控件。

并修改下面的js代码:

window.parent.location="http://localhost:8075/webroot/decision/view/report?viewlet=HyperLink5.cpt&客户ID="+ID;

222

4.3 效果预览

打开主模板:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\Hyperlink5.cpt

查询客户名称,点击订单ID,在新对话框中修改数据,点击提交后,即可保留查询参数刷新主模板,效果如下所述。

222