数据逻辑删除的实现

  • 文档创建者:flyingsnake
  • 编辑次数:9次
  • 最近更新:Wendy123456 于 2020-03-09
  • 1. 概述

    1.1 版本

    报表服务器版本
    10.0

    1.2 问题描述

    用户有时需要实现数据备份留底且数据不能在业务界面展现的效果,该如何操作呢?

    1.3 解决思路

    • 使用逻辑删除来解决。即在数据库表中增加一列「状态」,通过更改这个状态列的值,控制数据的可见与不可见。

    • 过滤展现数据。即使用「状态」字段的值约束数据是否显示,例如,原始查询语句为:select * from CUSTOMER ,状态约束后的查询语句为:select * from CUSTOMER  where 状态="1"

    2. 操作步骤

    以 FRDemo 中的 CUSTOMER 表为例,由于表中没有「状态」字段,使用district字段作为「标记」。

    当 district 字段中的值为 1 时,为正常数据;当 district 字段中的值为 0 时,为删除的数据。

    2.1 数据准备

    在 FineReport 设计器中点击文件>新建普通报表,添加模板数据集 ds1,SQL 语句为select * from CUSTOMER

    2.2 表样设计

    将 ds1 中的数据列拖入到模板中,为表格设置边框、文本居中对齐、F 列文本设置颜色,具体设置如下图所示:

    1583485418247573.png

    2.3 增加按钮

    1)为 G2 单元格设置按钮控件,按钮名字为删除。如下图所示:

    1583724995833959.png

    2)为 H2 单元格设置按钮控件,按钮名字为取消删除。如下图所示:

    1583725200235314.png

    2.4 添加点击事件

    1)选中 G2 单元格,在右侧属性面板中点击控件设置>事件,添加点击事件。点击事件中增加参数row和参数col,值用公式表示分别为:row() - 1col() - 2

    如下图所示:

    1583720673204268.png

    JS 代码如下所示:

    FR.Msg.confirm("提示","确定要删除数据吗?",function(value){if(value){
    contentPane.setCellValue(col,row,"0");
    _g('${sessionID}').writeReport(); }
    else{ contentPane.setCellValue(col,row,"1");
    _g().parameterCommit(); } })

    2)选中 H2 单元格,在右侧属性面板中点击控件设置>事件,添加点击事件。点击事件中增加参数row和参数col,值用公式表示分别为:row() - 1col() - 3

    如下图所示:

    1583721326264352.png

    JS 代码如下所示:

    var v1=contentPane.getCellValue(0,col,row); 
    FR.Msg.confirm("提示","确定要取消删除数据吗?",function(value){ if(value){ contentPane.setCellValue(col,row,"1");
    _g('${sessionID}').writeReport(); } 
    else{ contentPane.setCellValue(col,row,"0");
    _g('${sessionID}').writeReport(); 
    _g().parameterCommit(); } });

    2.5 填报设置

    点击模板>报表填报属性,进行填报设置。如下图所示:

    注:报表填报属性设置步骤请参考 报表填报属性
    1583721690504641.png

    2.6 设置形态

    选中 F2 单元格,点击单元格属性>形态,为 F2 单元格设置公式形态,公式为if($$$="1","正常","已经删除")。如下图所示:

    1583725807575654.png

    2.7 效果查看

    2.7.1 PC 端

    保存模板,点击填报预览,PC 端效果如下图所示:

    1583726166714943.gif

    2.7.2 移动端

    1)App

    App 效果如下图所示:

    1583726986101794.gif

    2)HTML5 

    HTML5 端效果如下图所示:

    1583727526220375.gif

    3. 已完成模板

    已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\65-JS实现数据逻辑删除.cpt

    点击下载模板:65-JS实现数据逻辑删除.cpt

    附件列表


    主题: 填报应用
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!