反饋已提交

網絡繁忙

JS實現刪除時二次確認

1. 概述

1.1 問題描述

預設刪除列按鈕,點選刪除不會二次確認,因此可能會出現誤刪的情況。如果希望點選刪除按鈕時,可以彈出確認刪除的提示框,要怎麼實現呢?效果如下圖所示:

2024-07-29_15-32-03.jpg

1.2 實現思路

用「普通」按鈕類型製作刪除列按鈕,並新增點選事件,實現刪除時透過彈窗進行二次確認。API說明可以參考:API匯總

注:不支援行動端。

2. 範例一:單按鈕方式

2.1 設計報表

1)建立資料庫查詢資料集 ds1,SQL 語句為:SELECT * FROM Sales

2024-07-29_15-21-16.jpg

2)設計填報表格,將對應欄位拖入 A3-F3 儲存格,並分別新增「正文元件」,如下圖所示:

1722237904784241.jpg

3)在 G3 儲存格新增按鈕元件,按鈕類型選擇「普通」,按鈕名稱填寫刪除列,如下圖所示:

2024-07-29_15-25-55.jpg

2.2 設定報表填報屬性

菜單欄選擇「範本>報表填報屬性」,新增「內建 SQL」 提交,設定如下圖所示:
1722238128675548.png

注:建議勾選「未修改不更新」,防止大數據量時提交出現效能問題。如場景限制無法勾選,可以考慮範例二的方法 。

2.3 新增點選事件

選中 G3 儲存格,新增「點選事件」,如下圖所示:

QQ图片20240729153017.png

JavaScript 程式碼如下:

var cell = this.options.location;
//獲取當前元件所在儲存格的編號
FR.Msg.confirm("警告", "確定要刪除嗎?", function(value) {
if (value) {
_g().deleteReportRC(cell);
//刪除當前列
}
})

刪除列按鈕只會從頁面上刪除當前列,如果需要在刪除列時觸發提交動作,則更換成如下 JavaScript 程式碼:

var cell = this.options.location;
//獲取當前元件所在儲存格的編號
FR.Msg.confirm("警告", "確定要刪除嗎?", function(value) {
if (value) {
_g().deleteReportRC(cell);
//刪除當前列
_g().verifyAndWriteReport();
//校驗並提交
}
})

2.4 效果預覽

儲存報表,點選「填報預覽」,效果如下圖所示:

动画2.gif

注:如果設定了提交的JS,那麼當未勾選「未修改不更新」時,每次刪除列都會觸發頁面的整體提交來實現刪除資料效果。如果只希望觸發單列資料的刪除,必須勾選「未修改不更新」,或者可以參考範例二的方法實現。

3.範例二:雙按鈕方式

3.1 設計報表

1)建立資料庫查詢資料集 ds1,SQL 語句為:SELECT * FROM Sales

2024-07-29_15-21-16.jpg

2)設計填報表格,將對應欄位拖入 A3-F3 儲存格,並分別新增「正文元件」,如下圖所示:

1722238735523174.jpg

3)在 G3 儲存格新增按鈕元件,按鈕類型選擇「普通」,按鈕名稱填寫刪除列,如下圖所示:

2024-07-29_15-39-49.jpg

4)在 H3 儲存格新增按鈕元件,按鈕類型選擇「普通」,按鈕名稱填寫刪除列(隱藏),如下圖所示:

2024-07-29_15-40-16.jpg

注:必須是「普通」類型按鈕,刪除列類型按鈕會有邏輯衝突問題。

3.2 設定刪除提交

1)選中 H3 的按鈕元件,設定一個點選事件。選擇「提交入庫>刪除提交」,綁定對應主鍵欄位。

1722238926542869.jpg

2)在回呼函式中,新增 JavaScript 程式碼實現刪除列動作以及提交結果提示。

1722238997208088.jpg

JavaScript 程式碼如下:

if (fr_submitinfo.success) {
_g().deleteReportRC(this.options.location);
//刪除當前列
FR.Msg.toast('刪除成功');
} else {
FR.Msg.toast('刪除失敗,錯誤資訊為:' + fr_submitinfo.failinfo);
}

3)設定完成後隱藏H欄。

1722239058350452.jpg

3.3 設定二次確認

選中 G3 的按鈕元件,設定一個點選事件,用於實現刪除列前的二次確認效果。

2024-07-29_15-45-21.jpg

JavaScript 程式碼如下:

var cell = this.options.location;
//獲取當前元件所在儲存格的編號
var cr = FR.cellStr2ColumnRow(cell);
//獲取當前儲存格的列欄號
var delcell = FR.columnRow2CellStr({
col: cr.col + 1,
row: cr.row
})
//獲取當前儲存格後一欄的儲存格編號
FR.Msg.confirm("警告", "確定要刪除嗎?", function(value) {
if (value) {
_g().getWidgetByCell(delcell).fireEvent("click");
//模擬點選按鈕
}
})

3.4 效果預覽

儲存報表,填報預覽後效果如下圖所示:

动画1.gif


4. 範本下載

附件列表


主題: 填報應用
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙