您的位置:首页 > 其它

Ext ComboBox控件使用常见问题

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

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();
});
}

Ext文件
var Ptype=new Ext.data.SimpleStore({
fields:['value', 'text'],
data:[['01','咨询类'],['02','软件类'],['03','其他']]
});


var combo=new Ext.form.ComboBox({
id:'depart',
name:'Pptype',
fieldLabel:'所属部门',
emptyText:'请选择',
anchor:'95%',
//hiddenName:'depart_com',
mode : 'local',
editable: false,
triggerAction: 'all',
//readOnly : true,
store:Ptype,
valueField : 'value', //值
displayField : 'text' //显示下拉框内容
//allowBlank : false//不允许为空
//blankText:'请选择部门'
});




java文件

public List selectDepatCom(){
List list=new ArrayList();
String sql="select * from depart";
DBcon dbcon=new DBcon();
try {
PreparedStatement ps=dbcon.con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next()){
DepartBean db=new DepartBean();
db.setDepid(rs.getInt(1));
db.setDepname(rs.getString(2));
list.add(db);
}
rs.close();
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
dbcon.closeDBcon();
}
return list;
}

最后,如果你的ComboBox控件,采用远程服务器取数据的话, mode:要采用remote, 当出现数据显示不了的话,你也可能和我犯了一样愚蠢的错误, 没有为ComboBox控件指定 triggerAction, 因为当下拉框被激活了之后,要判断该值。(all: 显示所有数据不过滤, query:过滤数据,如果是远程的话,会调用查询)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: