反饋已提交

網絡繁忙

當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

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

1. 概述

1.1 问题描述

在报表页面中,需要实现点击按钮后可以对页面中一些值做运算或处理。当前在填报页面的逻辑是:控件中填入新值后,需要点击下空白区域或是执行某个其他操作,值才能被正确读取。

如果想实现当控件中填入新值之后,不用做任何页面操作,填入的值就可以立即被读取到,该怎么做呢?

如下图所示,通过按钮控件 Alert 处单元格的值理解其区别:

A3、B3 中各输入一个值,C3 的值为 A3+B3,点击「直接相加」按钮,遵循填报页面逻辑,弹框中 B3 的值未显示,点击「优化后」按钮,弹框中 B3 的值可以显示。

222

1.2 实现思路

用 JS 来强制跳转光标实现填入新值后可以直接被读取到。

2. 示例

2.1 设计报表

1)A3 和 B3 单元格添加文本控件

image.png

2)D3 和 E3 单元格添加按钮控件

image.png

3)C3 单元格为 A3 和 B3 相加值,公式为:sum(A3:B3)

image.png

2.2 直接相加按钮的 JS

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

var B3 = contentPane.curLGP.getCellValue("B3");//获取B3单元格的值
var A3 = contentPane.curLGP.getCellValue("A3");//获取A3单元格的值
alert("a3的值:"+A3);//打印A3单元格的值
alert("b3的值:"+B3);//打印B3单元格的值

image.png

2.3 优化后按钮的 JS

E3 控件的按钮名字命名为「优化后」,添加一个点击事件,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单元格,符合了报表页面赋值的逻辑。

image.png

2.4 预览效果

保存报表,选填报预览效果如下图所示:

222

注:不支持移动端。

3. 模板下载

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\04-JS解决控件值刷新不及时的问题.cpt

点击下载模板::04-JS解决控件值刷新不及时的问题.cpt

附件列表


主題: 原简体文档
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉