反饋已提交

網絡繁忙

JS實現根據元件值自動匹配資料

1. 概述

1.1 問題描述

根據元件值自動匹配資料文檔中介紹了2種聯動方式,但是都需要在儲存格失焦後才能觸發聯動,且一旦手動修改了聯動公式所在儲存格的資料,後續就無法再聯動了。

那麼如果有以上兩種需求的場景,該如何實現呢?

1656063123qtVW.gif

1.2 解決方案

利用元件的編輯後事件觸發聯動,在事件中根據當前值獲取所需資料,賦給其他儲存格。API說明可以參考: API匯總

注:不支援行動端。

2. 範例

2.1 設計範本

建立普通報表,設計填報表格,A3 儲存格新增下拉框元件,B3~F3 新增正文框元件,如下圖所示:

2.2 下拉框設定資料字典

選中 A3 儲存格,給下拉框元件綁定資料字典,如下圖所示:

2.3 新增資料集

建立資料集ds1,從FRDemoTW取數,sql語句為:SELECT * FROM 產品

2.4 設定編輯後事件

選中A3儲存格,給下拉框元件新增一個編輯後事件。

JavaScript 程式碼如下:

注:使用 FR.remoteEvaluate API存在一定安全風險,使用者可根據實際情況使用,詳情可查看:全局API-FR

var id=this.getValue();
//獲取當前元件值
var cpmc=FR.remoteEvaluate("value('ds1','產品名稱','產品ID','"+id+"')");
var dwsl=FR.remoteEvaluate("value('ds1','單位數量','產品ID','"+id+"')");
var cbj=FR.remoteEvaluate("value('ds1','成本價','產品ID','"+id+"')");
var dj=FR.remoteEvaluate("value('ds1','單價','產品ID','"+id+"')");
var kcl=FR.remoteEvaluate("value('ds1','庫存量','產品ID','"+id+"')");
//根據產品ID去ds1資料集中獲取其他欄位的值
var row=FR.cellStr2ColumnRow(this.options.location).row;
//獲取當前行號
_g().setCellValue(0,1,row,cpmc);
_g().setCellValue(0,2,row,dwsl);
_g().setCellValue(0,3,row,cbj);
_g().setCellValue(0,4,row,dj);
_g().setCellValue(0,5,row,kcl);
//給當前行其他儲存格指派

2.5 效果預覽

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

1656063123qtVW.gif

3. 範本下載

已完成模板可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填報預覽JS實體\JS實現根據元件值自動匹配資料.cpt

點選下載範本:JS實現根據元件值自動匹配資料.cpt

附件列表


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

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

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

不再提示

10s後關閉

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

反馈已提交

网络繁忙