反饋已提交

網絡繁忙

JS實現根據元件值動態插入列

1. 概述

1.1 問題描述

想要實現在填報預覽的時候,根據元件所選值,動態擴展儲存格。

1722308789507090.gif

1.2 實現思路

儲存格的擴展計算在頁面載入結束後就固定了,所以使用公式等方式是無法實現動態擴展的。需要使用插入列API,配合JS指派方可實現需求。

API說明可以參考:API匯總

注:不支援行動端。

2. 範例

2.1 準備資料

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

1722306351453291.jpg

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

1722306462556001.jpg


2.2 範本設計

1)製作如圖所示範本:A1為下拉複選框元件,E3和F3分別為插入和刪除列按鈕。

1722307410636144.jpg

2)選中A1儲存格的下拉複選框元件,設定回傳值類型為陣列,實際值為產品ID,顯示值為產品名稱

1722307534682741.jpg


2.3 設定元件編輯結束事件

選中A1儲存格的下拉複選框元件,新增一個編輯結束事件。

1722307758846562.jpg

avaScript 程式碼如下:

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

var ids = this.getValue();
//獲取當前元件值
var id = $("td[id^=A]:last").attr("id");
//獲取A列最後一列的儲存格編號
var row = parseInt($("td[id^=A]:last").attr("row"));
//獲取A列最後一列的儲存格列號

setTimeout(function({
_g().appendReportRC(ids.length, id);
//在末尾插入列
setTimeout((function({
return function({
for (i = 0; i < ids.length; i++) {
var mc = FR.remoteEvaluate("value('ds2','產品名稱','產品ID','" + ids[i] + "')");
var sl = FR.remoteEvaluate("value('ds2','單位數量','產品ID','" + ids[i] + "')");
var dj = FR.remoteEvaluate("value('ds2','單價','產品ID','" + ids[i] + "')");
//根據產品ID,獲取其他欄位值
_g().setCellValue(00, row + i + 1, ids[i]);
_g().setCellValue(01, row + i + 1, mc);
_g().setCellValue(02, row + i + 1, sl);
_g().setCellValue(03, row + i + 1, dj);
//給對應儲存格指派
}
}
})(), 100);
//由於插入列是非同步請求,所以需要利用閉包來確定執行順序
}, 100)

_g().setCellValue(000"");
//清空A1儲存格

注:如果頁面載入較慢,則需要根據實際情況調整第一個 100 的延時時間( 1000 代表 1s )。

2.4 效果預覽

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

注:選擇值後要點選報表中有內容的儲存格,才會查詢出資料。

1722308765794868.gif

3. 範本下載

附件列表


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

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

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

不再提示

10s後關閉

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

反馈已提交

网络繁忙