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 數據準備
新建普通報表,新建數據庫查詢 ds1,SQL 查詢語句爲:select * from CUSTOMER。
2.2 表樣設計
将 ds1 中的數據列拖入到模板中,爲表格設置邊框、文本居中對齊、F 列文本設置顔色爲紅色,表格樣式如下圖所示:
2.3 添加按鈕控件
爲 G2、H2 單元格添加「按鈕控件」,按鈕名字分别爲「删除」和「取消删除」。步驟如下圖所示:
2.4 添加點擊事件
1)選中 G2 單元格,點擊右側「控件設置>事件」,添加點擊事件。點擊事件中增加參數 row 和參數 col ,值用公式表示分别爲:row() - 1 和col() - 2。輸入 JavaScript 代碼如下:
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。輸入 JavaScript 代碼如下:
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」兩個字段及對應的單元格。如下圖所示:
注:報表填報屬性設置步驟請參考報表填報屬性。
2.6 形态設置
選中 F2 單元格,點擊「單元格屬性>形态」,選擇「公式形态」,輸入公式:if($$$="1","正常","已經删除"),表示如果當前單元格值爲 1,顯示爲「正常」,否則顯示爲「已經删除」。
2.7 效果預覽
2.7.1 PC 端
保存模板,點擊「填報預覽」,效果如下圖所示:
2.7.2 移動端
App 端和 HTML5 端均支持,效果如下圖所示:
3. 模板下載
已完成模板可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填報預覽JS實例\JS實現數據邏輯删除.cpt
點擊下載模板:JS實現數據邏輯删除.cpt