(转)ComboBox 要注意的几个小问题 -- 值跑位,值显示,获取输入值

在Extjs中,使用到ComboBox总会出现一些小问题,找半天都找不出来原因,下面就是几个要注意的。。

1。ComboBox加载数据之后,ComboBox里面的值跑位,不能正确对应到ComboBox里面。
原因:因为要传name的值到服务器端,使用到了隐藏属性hiddeName来传值,hiddenName的名是要和name一样的。如果id和name设置为相同的,就会不能正确对应。所以,comboBox的id和name 不能设置一样
new Ext.form.ComboBox({
id:"comboId",
name:"comboName",
hiddenName:"comboName"
});

//注意:加了HiddenName这个属性,得到的ComboBox是它的id,反则是显示值。。

2。 第二个问题是明明已经加载了数据之后store里面也有值,确没有再ComboBox里面显示,这个你就要注意你的ComboBox里面有没有设置valueField 和 displayField, valueField绑定到当前底层数据,相当于它的id,displayValue,绑定到当前底层数据对应的名词,顾名思义也就是显示出来的值。还要注意一下,它的映射是否也有写,field 里面是否写正确了。如果这两个属性没有,那就是值怎么也显示不出来的。还有一点是,得到的值从服务器端传回来,一定要记得有response.getWrite().print(json格式值); 有时前台都写正确了,但是还是没值,那就是没有将值传到前台

store : new Ext.Data.Store({           

      proxy: new Ext.Data.httpProxy({}),

    reader:new Ext.data.JsonReader({});

   field:["valueid","displayName"]                  

});

   new Ext.form.ComboBox({
id:"comboId",
name:"comboName",
hiddenName:"comboName",

store:store

valueField:"valueid"   , //要跟field里面对应,不然不能正确匹配

displayField:"dispalyField"
});

3. 获取ComboBox手动输入的值。手动输入的值是没有完全设置到ComboBox中value里面的,所以当我们去获取的时候,得到都是一个空字符串。

listeners : {
render : function(f) {
f.el.on('keyup', function(e) {
f.setValue(f.getRawValue());
vipStore.proxy = new Ext.data.HttpProxy({
url : "vip_realtimeVipName.action?vipID="
+ f.getRawValue()
});
vipStore.load();
});
}

这几个问题总会一不小心就会碰到,要多加注意了。。

posted @ 2010-08-24 15:37  小军人  阅读(3186)  评论(1编辑  收藏  举报