1. 概述编辑
1.1 版本
报表服务器版本 |
---|
10.0 |
1.2 应用场景
用户有时需要使用FR报表来删除数据,但是又希望留存数据备份,则可使用数据逻辑删除来实现。
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 列文本设置颜色,具体设置如下图所示:
2.3 增加按钮
1)为 G2 单元格设置按钮控件,按钮名字为删除。如下图所示:
2)为 H2 单元格设置按钮控件,按钮名字为取消删除。如下图所示:
2.4 添加点击事件
1)选中 G2 单元格,在右侧属性面板中点击控件设置>事件,添加点击事件。点击事件中增加参数row和参数col,值用公式表示分别为:row() - 1、col() - 2
如下图所示:
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() - 1、col() - 3
如下图所示:
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 填报设置
点击模板>报表填报属性,添加内置SQL提交,选择FRDemo数据库中CUSTOMER表。
点击智能添加字段,选择CUSTOMERID和DISTRICT字段,CUSTOMERID绑定A2单元格,DISTRICT字段绑定F2单元格,具体设置如下所示:
2.6 设置形态
选中 F2 单元格,点击单元格属性>形态,为 F2 单元格设置公式形态,公式为if($$$="1","正常","已经删除")。如下图所示:
3. 效果查看编辑
3.1 PC端效果
保存模板,点击填报预览,PC 端效果如下图所示:
3.2 移动端效果
1)App
App 效果如下图所示:
2)HTML5
HTML5 端效果如下图所示:
4. 模板下载编辑
已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\65-JS实现数据逻辑删除.cpt
点击下载模板:65-JS实现数据逻辑删除.cpt