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

目录:

1. 描述编辑

我们经常会碰到,数据需要备份留底,但是又不能让数据在业务界面展现的时候。

这时,就可以用逻辑删除来解决。

逻辑删除原理很简单。在数据库表中增加一列“状态”,之后通过更改这个状态列的值,控制数据可见与不可见。


222


2. 方案思路编辑

我们用”状态“字段的值,来约束数据是否显示,只需要在查询数据的时候,增加上条件属性

比如,原始查询语句是

SELECT * FROM CUSTOMER 

用状态约束后的查询语句则为:

SELECT * FROM CUSTOMER  where 标记=”1“

这样一来,数据集的展现结果就过滤掉了所有”标记“为0的数据。而数据依然在数据库中存在,进而实现逻辑删除。


3. 示例编辑

我们用FRDemo中的CUSTOMER表做演示

因为表中没有状态字段。我们使用“distinct”字段来作为“标记”。当distinct字段中的值为1时,认为是正常数据;当distinct字段中的值为0时,认为是删除的数据。

3.1 模板设计

添加数据集ds1:SQL语句为SELECT * FROM CUSTOMER

将字段拖拽到单元格中,如下图:

222

3.2 增加删除/取消删除按钮

添加两个按钮控件,按钮名称分别为删除按钮和取消删除按钮,如下图:

222

(1)给删除按钮添加点击事件,参数中新增col和row,具体设置如下图:

222

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)给取消删除按钮添加点击事件,参数中新增col和row,具体设置如下图:


222
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(); } }) contentPane.setCellValue(col,row,"China");  

3.3 填报设置

对状态列进行更新,点击模板>报表填报属性,进行填报设置如下图:

222

3.4 设置形态

为了让页面看起来更直观些。把状态列的值进行形态转换,显示为“正常”和“已经删除”。

数据形态的公式为if($$$="1","正常","已经删除"),如下图:

222


3.5 保存和预览

进行填报预览,效果即如上所示