近日在工作中遇到一個需求,要求頁面初始化的時候給dataGrid表插入一條數據。
前端使用的是Extjs框架,dataGrid表有四列,其中三列是類型為textbox,普通文本框,另外一列類型是combobox下拉框形式,下拉框一列的數據使用的數據字典,值通過初始化加載時從數據庫字典中查找得到的。由於對Extjs框架的不熟悉,以及前端水平很是有限,所以只好先求助度娘,找了好久都沒有找到解決辦法。只好自己嘗試各種方法,好在最后問題得以解決,所以記錄一下自己解決的思路和方法。
{ field:'A', title:'下拉框類型', width:50, editor:{ type:'combobox', options:{ valueField:'id', textField:'name', editable:false, loader:queryTableData, // 查詢數據字典 .... } } }
得到這個需求的時候感覺很簡單,在js中初始化Grid數據,使用如下
$("#target").datagrid("loadData",[{ field:"初始化值" // 文本框所對應的列的這樣賦值沒有問題 A:"下拉框字典項的id" // 直接這么賦值,js直接報錯 .......... }]);
找原因:通過查找字典表的函數,下拉框初始化加載得到的是一個字典對象,該對象有id,name,order...等屬性,在此處可以看到 valueField:'id',說明字典對象的id是下拉框要用到的一個屬性,既然初始化時直接插入,我們就來根據id屬性構造一個類似字典對象的對象出來,將該對象賦值給下拉框對應單元格,如下:
var obj={ id:'', name:'' } obj.id = '想要初始賦值的值對應的字典id' $("#target").datagrid("loadData",[{ field:"初始化值" // 文本框所對應的列的這樣賦值沒有問題 A:obj .......... }])
問題解決,主要是構造一個包含id屬性的類似字典對象的一個對象(上述的obj對象)。