JS解决控件值刷新不及时的问题

楼主
我是社区第238588位番薯,欢迎点我头像关注我哦~
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 直接相加按钮的 JS

D3 控件按钮名字命名为「直接相加」,添加一个点击事件,JS 代码如下:

  1. var B3 = contentPane.curLGP.getCellValue("B3");//获取B3单元格的值
  2. var A3 = contentPane.curLGP.getCellValue("A3");//获取A3单元格的值
  3. alert("a3的值:"+A3);//打印A3单元格的值
  4. alert("b3的值:"+B3);//打印B3单元格的值
复制代码

2.3 优化后按钮的 JS

E3 控件的按钮名字命名为「优化后」,添加一个点击事件,JS 代码如下:

  1. contentPane.curLGP.selectTDCell("A2");//将光标强制跳转到A2单元格,也就相当于用鼠标点击了一下A2单元格
  2. var B3 = contentPane.curLGP.getCellValue("B3");//获取B3单元格的值
  3. var A3 = contentPane.curLGP.getCellValue("A3");//获取A3单元格的值
  4. alert("a3的值:"+A3);//打印A3单元格的值
  5. 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  
分享扩散:

沙发
发表于 2021-5-11 15:55:04
大佬,参数面板 控件值刷新不及时 能处理吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1回帖数 2关注人数 7466浏览人数
最后回复于:2021-5-11 16:11

返回顶部 返回列表