历史版本5 :JS实现填报数据逻辑删除 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 描述
我们经常会碰到,数据需要备份留底,但是又不能让数据在业务界面展现的时候。
这时,就可以用逻辑删除来解决。
逻辑删除原理很简单。在数据库表中增加一列“状态”,之后通过更改这个状态列的值,控制数据可见与不可见。
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
将字段拖拽到单元格中,如下图:
3.2 增加删除/取消删除按钮
添加两个按钮控件,按钮名称分别为删除按钮和取消删除按钮,如下图:
(1)给删除按钮添加点击事件,参数中新增col和row,具体设置如下图:
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,具体设置如下图:
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 填报设置
对状态列进行更新,点击模板>报表填报属性,进行填报设置如下图:
3.4 设置形态
为了让页面看起来更直观些。把状态列的值进行形态转换,显示为“正常”和“已经删除”。
数据形态的公式为if($$$="1","正常","已经删除"),如下图:
3.5 保存和预览
进行填报预览,效果即如上所示