1. 概述
1.1 問題描述
删除行時先提示确認中,删除僅爲報表頁面上的删除,需要點「提交」按鈕後才會入庫生效。
在對行式填報表進行操作時,希望點擊删除行按鈕時,彈出确認删除對話框,若點擊确認則删除數據并提交入庫;若點擊取消,則不執行任何操作,如下圖所示,該如何實現呢?
1.2 實現思路
通過給删除行按鈕增加一個點擊事件,在 JS 中通過返回值的不同來實現不同操作。
2. 示例 1
2.1 準備模板
下載内置模板:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填報預覽JS實例\42-JS實現插入自定義行數.cpt
點擊下載模板:42-JS實現插入自定義行數.cpt
模板打開後報表樣式如下圖所示:
2.2 修改模板
打開模板,将 ds1 中的字段拖到單元格中,如下圖所示:
2.3 添加按鈕控件
選擇 H3 單元格,在右側「控件設置>屬性」中,添加「按鈕控件」,按鈕類型選擇「删除行」,指定單元格爲 A3,如下圖所示:
2.4 添加點擊事件
選擇 H3 單元格,在右側「控件設置>事件 」中,添加「點擊」事件,如下圖所示:
JavaScript 代碼如下:
if(confirm("确認删除")) //彈出确認删除對話框
{
setTimeout(function() {
_g('${sessionID}').writeReport(); //執行提交入庫操作
}, 2000);
return true; //點擊确定時,返回值爲true,執行如上操作。
}
else
{
return false; //點擊取消時,返回值爲false,不執行操作。
}
2.5 效果預覽
2.5.1 PC 端
保存模板,點擊「填報預覽」,效果如下圖所示:
注:點擊「确定」,報表頁面先删除數據,再執行提交入庫,因此提交入庫會延遲,這裏設置的延遲 2 秒。
2.5.2 移動端
移動端及 HTML 5 效果如下圖所示:
3. 示例 2
3.1 準備模板
同 2.1 節,可參考 2.1 節内容。
3.2 修改模板
同 2.2 節,可參考 2.2 節内容。
3.3 添加控件
1)選擇 H3 單元格,在右側「控件設置>屬性」中,添加「按鈕控件」,按鈕類型選擇「普通」,按鈕名字爲「删除行」,如下圖所示:
2)選擇 I3 單元格,在右側「控件設置>屬性」中,添加「按鈕控件」,按鈕類型選擇「删除行」,指定單元格爲 A3,如下圖所示:
3.4 添加點擊事件
1)選擇 H3 單元格,在右側「控件設置>屬性」中,添加「點擊」事件,增加一個參數 delRow,參數值爲=row(),如下圖所示:
JavaScript 代碼如下:
var location = 'I'+delRow; //拼接真正的删除行按鈕位置
var content = "确認删除第"+(delRow-2)+"行數據?"; //拼接提示信息
FR.Msg.confirm("",content,function (result) { if(result){
contentPane.getWidgetByCell(location).fireEvent("click"); //觸發真删除行按鈕的點擊事件
setTimeout(function() {
_g('${sessionID}').writeReport(); //執行提交入庫操作
}, 2000);
}})
2)選擇 I3 單元格,在右側屬性面板>控件設置>事件中,添加「點擊事件」,JS 代碼爲 null ,如下圖所示:
3)右鍵點擊 I 列,選擇「隐藏」,隐藏 I3 單元格,如下圖所示:
3.5 效果預覽
3.5.1 PC 端
保存模板,點擊「填報預覽」,效果如下圖所示:
3.5.2 移動端
移動端及 HTML 5 效果如下圖所示:
4. 模板下載
已完成的模板,請參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填報預覽JS實例\45-JS實現删除行前先确認.cpt
點擊下載模板:45-JS實現删除行前先确認.cpt
已完成的模板,請參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填報預覽JS實例\63-JS實現删除行前先确認.cpt
點擊下載模板:63-JS實現删除行前确認.cpt