另一個常用的元件,下拉式選項
選項的內容值可以直接寫在選項內,也可以抓取資料庫的值。
方式一.直接寫選項值
點選元件後,到[設定選項],將要放入的下拉值設定好。
設定幣別有台幣和美金,兩種選項。
顯示值為下拉選項看到的表面值。
實際值為下拉選項實際意義的價值Value。
方式二.透過SQL抓資料值
EFGP的BPM文件也有介紹說明方式,在此忽略,細節請登入EFGP看BPM文件。
在此分享BPM文件沒有介紹,很常用的抓資料方式,兩行就搞定。
//抓取SQL註冊器的資料代號,當下拉式選項
var tSqlId = "getTTafz";
FormUtil.appendOptionBySqlId(tSqlId,"dwnTT"); //第二個參數,為下拉式選項元件代號。
在此要留意,SQL註冊器的Select 欄位數要為兩個,前面放表面值 後面放實際值。
以此範例為例。
通常載入資料到下拉選項的語法會寫在Form Open() 表單開啟時。
但這會遇到一個狀況,當選項有A,B,C三種資料時,第一關卡選B,
執行到下一關卡時,系統執行Form Open又會重新再載入一次資料
這時選項B的紀錄已被刷掉。這是我起初開發表單時常遇到的狀況。
所以請大家務必在Form Open時,先載入下拉選項的資料,再加入
以下語法,讓下拉選項的隱藏值定住選項值。
//當新增一個下拉選項的元件時,系統也同步會新增一個 元件代號_hdn 的隱藏元件
var dwn_B_hdn=document.getElementById("dwn_B_hdn"); if (dwn_B_hdn != null) { //要表單送出後,系統才會建立此隱藏元件,所以寫這一行當判斷
var tSelectdwn_B=eval(dwn_B_hdn.value); //注意要以eval() 轉換值。
DWRUtil.setValue("dwn_B", tSelectdwn_B); //第一個參數為下拉選項的元件代號。
補充另一種做法,將SQL語法寫在FORM 裡。
//下拉式選單 -簽核層級
var dwn_FunLevel_hdn=document.getElementById("FunLevel_hdn");
var tSql2 = "select functionLevelName,functionLevelName from FunctionLevel where organizationOID='"+mainOrgOID+"' order by levelValue DESC"; FormUtil.appendOption("EFGP",tSql2,"FunLevel");
//第三個參數是下拉選項的元件代號。
if (dwn_FunLevel_hdn != null) {
var tSelectdwn_FunLevel=eval(dwn_FunLevel_hdn.value);
DWRUtil.setValue("FunLevel", tSelectdwn_FunLevel);
}
結論:
使用 FormUtil.appendOptionBySqlId 載入SQL註冊器的選項值,或FormUtil.appendOption載入SQL語法
使用 DWRUtil.setValue 鎖定下拉式選項值。