最近经常遇到需要弹出窗口的页面,在需求上有父窗口向子窗口传参的,也有子窗口向父窗口传参的。
下面先说简单的,父窗口向子窗口传参:
这个根据帆软提供的传递参数的方法就行,帮助文档有很多方法。
思路都是获取到这个单元格的值,赋给一个参数,然后把这个参数传递到子页面。
一、超链接传递参数
定义一个参数名称然后设置好需要传递的值,在子页面获取到这个参数就行了。
我这里用的是a,子页面上就写$a就可以获取到这个参数。
二、用按钮弹出iframe的方法
就是直接用js获取到单元格的值
- var F = contentPane.getWidgetByCell("B3").getValue();
澶嶅埗浠g爜 然后在连接的最后加上&参数=值;
- iframe.attr("src","${servletURL}?reportlet=D2.cpt&op=write&id="+F);
澶嶅埗浠g爜 在子页面直接根据$id就可以获取到参数了。
接下来我们来说父窗口怎么获取到子窗口的值。
需求:子窗口的值保存或者是点击按钮之后,父窗口获取到一个值(比如A1单元格的值)。
思路一:如果父窗口全是展示,而且数量不是很大,那么子窗口点击保持后页面关闭,刷新父窗口,父窗口重新从数据库中读取。
思路二:如果父窗口有填报的值,那么把填报的值都暂存起来,然后刷新页面就可以了。
思路三:如果父窗口数据量很大,整体刷新页面不合适,那么就直接通过js获取到子页面的值赋给父页面。
方法一:
这个比较简单,只是需要在子窗口的web属性中设置一个填报成功事件就行了。
- window.close();//关闭子页面
- window.parent.location.reload();//刷新父窗口
澶嶅埗浠g爜 方法二:
其实这个就是在页面刷新之前调用一下帆软自带的暂存按钮的js。
- window.parent.document.getElementById("fr-btn-StashButton").click();
澶嶅埗浠g爜 可以设置暂存按钮为不可见,这样的话就模拟用户点击暂存就行了。功能上可以不告诉用户有这个功能,反正你不说他们也不知道。(需求上没提的话)
方法三:
- var v3=window.parent.contentPane.curLGP.getCellValue("B1");
- //获取到父窗口上B1单元格的值
- window.parent.contentPane.setCellValue(0,1,0,"customer");
- //给父窗口B1单元格的值赋值为customer
澶嶅埗浠g爜 这样就可以给单元格的实际值赋值了。
当然如果有更简单的方法,希望告诉我哟。。。
QQ:1176846029
编辑于 2017-12-25 16:22
|