历史版本10 :JS实现填报数据逻辑删除 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

报表服务器版本
10.0

1.2 应用场景

用户有时需要使用FR报表来删除数据,但是又希望留存数据备份,则可使用数据逻辑删除来实现。

2. 实现思路编辑

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

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

3. 示例编辑

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

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

3.1 数据准备

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

3.2 模板设计

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

1583485418247573.png

3.3 增加按钮

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

1583724995833959.png

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

1583725200235314.png

3.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(); } });

3.5 填报设置

  • 点击模板>报表填报属性,添加内置SQL提交,选择FRDemo数据库中CUSTOMER表。

  • 点击智能添加字段,选择CUSTOMERID和DISTRICT字段,CUSTOMERID绑定A2单元格,DISTRICT字段绑定F2单元格,具体设置如下所示:

1583721690504641.png

3.6 设置形态

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

1583725807575654.png

4. 效果查看编辑

4.1 PC端效果

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

1583726166714943.gif

4.2 移动端效果

1)App

App 效果如下图所示:

1583726986101794.gif

2)HTML5 

HTML5 端效果如下图所示:

1583727526220375.gif

5. 模板下载编辑

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

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