反饋已提交

網絡繁忙

​JS實現只提交修改過的資料

1. 概述

1.1 問題描述

在 填報未修改不更新 文檔中介紹了未修改不更新的作用以及限制,其中一個限制是:未修改不更新僅適用於所有填入的值為儲存格的情況,若填入值為固定字串,公式,參數等其他形式,則該功能將灰化無法使用。那麼如何繞開這個限制呢?

1.2 解決思路

可以利用「提交條件」來實現同樣需求。在修改/插入/刪除的行中做一個標記,然後利用提交條件,只提交帶有標記的資料行,這樣就間接實現了「未修改不更新」的功能。

API說明可以參考:APIAPI匯總

注:不支援行動端和 Excel 匯入場景。

2. 操作步驟

2.1 範本準備

在 FineReport 設計器中開啟範本%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\LineForm\LineForm1.cpt

2.2 設定正文元件

選中 L3 儲存格,在右側屬性面板中點選元件設定,選擇正文元件。設定完成後可以隱藏該列。

2.3 修改欄位值

點選範本>報表填報屬性,將「中止」欄位的值改為字串false,此時右側的「未修改不更新」功能灰化不可使用,如下圖所示:

2.4 設定提交條件

點選設定提交條件,選擇公式,公式為 L3=1,點選確定。如下圖所示:

2.5 修改時新增標記

在可能涉及到修改內容的儲存格元件中新增「編輯後」事件,例如本例中的 B3~K3 儲存格。

JavaScript 程式碼如下:

var row = FR.cellStr2ColumnRow(this.options.location).row + 1;
//獲取當前行號
_g().setCellValue('L' + row, null, 1);
//給當前行的L列儲存格指派

2.6 新增行時新增標記

可不設定,因為新增行後編輯儲存格,同樣會呼叫 2.5 章節中的程式碼。

2.7 刪除行時新增標記

開啟範本>報表 Web 屬性>填報頁面設定,新增一個刪除行前事件,這裏與上面程式碼不同的是獲取行號,如下圖所示:

JavaScript 程式碼如下:

var row = parseInt($(_g().curLGP.currentTDCell).attr('row')) + 1;
//獲取當前刪除行的行號
_g().setCellValue('L' + row, null, 1);
//給當前刪除行的L列儲存格指派

2.8 效果查看

1)修改、新增行新增標記效果

點選「填報預覽」,任意修改值後,L 列會自動填寫標記,如下圖所示:


2)刪除行時新增標記效果

點選「填報預覽」,點選「刪除行列」後,L 列會自動填寫標記。點選「提交」,即可成功刪除資料,如下圖所示:

JS實現只提交修改過的資料.gif



3. 範本下載

已完成模板可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填報預覽JS實體\JS實現只提交修改過的資料.cpt

點選下載範本:JS实现只提交修改过的数据.cpt

附件列表


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

文 檔回 饋

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

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

不再提示

10s後關閉