通用的填报中未修改不更新设置方法

  • 文档创建者:yets11
  • 编辑次数:11次
  • 最近更新:Wendy123456 于 2020-02-17
  • 1. 概述

    1.1 问题描述

    新版的填报应用中,提供了「未修改不更新」的可设置选项,在大数据量的更新/插入/删除应用中非常方便,可查看 未修改不更新
    但「未修改不更新」适用于所有字段均为单元格,当填报的是固定值或公式时,这个功能无法使用。如中止的值为 false 时,「未修改不更新」无法使用,如下图所示:

    1581917798997375.png

    1.2 解决思路

    可以利用设置提交条件来巧妙避开这一功能限制,在修改/插入/删除的行中做一个标记,再利用提交条件,有标记的提交,就间接实现了「未修改不更新」的功能,而且比上面这个功能更为通用。

    2. 操作步骤

    2.1 模板准备

    在 FineReport 设计器中打开模板%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\LineForm\LineForm1.cpt

    2.2 设置文本控件

    选中 L3 单元格,在右侧属性面板中点击控件设置,选择文本控件,如下图所示:

    1581908366312642.png

    2.3 修改字段值

    点击模板>报表填报属性,将「中止」字段的值改为false,如下图所示:

    1579101753111348.png

    2.4 设置提交条件

    点击设置提交条件,选择公式,公式为 L3=1,点击确定。如下图所示:
    1579102011104767.png

    2.5 添加标记

    在可能涉及到修改内容的单元格控件编辑后事件中写 JS 代码。例如选中 B3 单元格,在右侧属性面板中点击控件设置>事件>编辑后事件,来设置标记 1 。如下图所示:

    1581908907652358.png

    这里为了取得当前编辑行的行号,定义了一个 row 的参数,值为公式=row(),比如当前行为第 3 行,JS 部分再设置这个单元格值为 1,即 L3。

    代码如下所示:

    contentPane.curLGP.setCellValue('L'+row,null,1);
    contentPane.setCellValue('L'+row,null,1);

    在其他单元格控件编辑后事件中同样做此设置,即 C3-K3 单元格,代码及参数定义相同。

    2.6 新增行时加上标记

    可不设置,因为新增后,再编辑单元格,同样会调用 2.5 章节中的代码。

    2.7 删除行时加上标记

    打开模板>报表 Web 属性>填报页面设置,添加一个删除行前事件,这里与上面步骤不同的是获取行号,如下图所示:
    1581909261869598.png

    JS 代码如下所示:

    var row=parseInt($(contentPane.curLGP.currentTDCell).attr('row'))+1;
    contentPane.curLGP.setCellValue('L'+row,null,1); 
    contentPane.setCellValue('L'+row,null,1);

    2.8 效果查看

    注:查看具体 SQL 日志,需在文件>选项>高级中,将 log 级别设置切换为 DEBUG 模式。

    保存后,点击填报预览,分别尝试修改、添加,删除,都可看到效果。


    附件列表


    主题: 填报应用
    • 有帮助
    • 没帮助
    • 只是浏览