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

  • 文档创建者:flyingsnake
  • 编辑次数:9次
  • 最近更新:Leo.Tsai 于 2019-12-16
  • 1. 概述

    1.1 问题描述

    报表设计时会经常用到按钮进行一些页面值的处理工作,但是目前默认的逻辑是:对于每次新填报的值,需要点击下空白区域或是执行某个其他操作,才可以被正确读取。而我们需要实现的效果是,当控件中填入新值之后,可以立即被读取到。

    以下面示例中的效果来说明:

    B3 单元格填入一个值后,点击直接相加按钮,是未优化前的效果,不能读取到该值。点击优化后按钮,可以直接读取到填入的新值。

    222

    1.2 实现思路

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

    2. 示例

    2.1 设计报表

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

    image.png

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

    image.png

    3)C3 单元格为 A3 和 B3 相加值。

    image.png

    2.2 直接相加按钮的 JS

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

    var B3 = contentPane.curLGP.getCellValue("B3");
    var A3 = contentPane.curLGP.getCellValue("A3");
    alert("a3的值:"+A3);
    alert("b3的值:"+B3);

    image.png

    2.3 优化后按钮的 JS

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

    var cell = contentPane.curLGP.getTDCell(1,2);
    contentPane.curLGP.selectTDCell(cell);
    var B3 = contentPane.curLGP.getCellValue("B3");
    var A3 = contentPane.curLGP.getCellValue("A3");
    alert("a3的值:"+A3);
    alert("b3的值:"+B3);

    注:contentPane.curLGP.selectTDCell(cell); 表示的是将光标强制跳转到 A2 单元格,也就相当于用鼠标点击了一下 A2 单元格,使其获得光标,进而强制 B3 单元格刷新值。

    image.png

    2.4 预览效果

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

    222

    注:不支持移动端。

    3. 模板下载

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

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

    附件列表


    主题: 二次开发
    • 有帮助
    • 没帮助
    • 只是浏览