Extjs 中combobox下拉框初始化赋值
近日在工作中遇到一个需求,要求页面初始化的时候给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对象)。