1. 概述
1.1 问题描述在报表页面中,需要实现点击按钮后可以对页面中一些值做运算或处理。当前在填报页面的逻辑是:控件中填入新值后,需要点击下空白区域或是执行某个其他操作,值才能被正确读取。 如果想实现当控件中填入新值之后,不用做任何页面操作,填入的值就可以立即被读取到,该怎么做呢? 如下图所示,通过按钮控件 Alert 处单元格的值理解其区别:
A3、B3 中各输入一个值,C3 的值为 A3+B3,点击「直接相加」按钮,遵循填报页面逻辑,弹框中 B3 的值未显示,点击「优化后」按钮,弹框中 B3 的值可以显示。 1.2 实现思路用 JS 来强制跳转光标实现填入新值后可以直接被读取到。
2. 示例
2.1 设计报表1)A3 和 B3 单元格添加文本控件。 2)D3 和 E3 单元格添加按钮控件。 3)C3 单元格为 A3 和 B3 相加值,公式为:sum(A3:B3) 2.2 直接相加按钮的 JSD3 控件按钮名字命名为「直接相加」,添加一个点击事件,JS 代码如下: - var B3 = contentPane.curLGP.getCellValue("B3");//获取B3单元格的值
- var A3 = contentPane.curLGP.getCellValue("A3");//获取A3单元格的值
- alert("a3的值:"+A3);//打印A3单元格的值
- alert("b3的值:"+B3);//打印B3单元格的值
复制代码
2.3 优化后按钮的 JSE3 控件的按钮名字命名为「优化后」,添加一个点击事件,JS 代码如下: - contentPane.curLGP.selectTDCell("A2");//将光标强制跳转到A2单元格,也就相当于用鼠标点击了一下A2单元格
- var B3 = contentPane.curLGP.getCellValue("B3");//获取B3单元格的值
- var A3 = contentPane.curLGP.getCellValue("A3");//获取A3单元格的值
- alert("a3的值:"+A3);//打印A3单元格的值
- alert("b3的值:"+B3);//打印B3单元格的值
复制代码
JS 代码实现将光标强制跳转到 A2 单元格,相当于用鼠标点击了A2单元格,符合了报表页面赋值的逻辑。 2.4 预览效果保存报表,选择填报预览,效果如下图所示: 注:不支持移动端。
3. 模板下载已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\04-JS解决控件值刷新不及时的问题.cpt 点击下载模板:
04-JS解决控件值刷新不及时的问题.cpt
(3.6 KB, 下载次数: 37)
编辑于 2021-4-28 11:38
|