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:过滤数据,如果是远程的话,会调用查询)
原因:因为要传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:过滤数据,如果是远程的话,会调用查询)
相关文章推荐
- 【原创】[Ext.ux.UploadDialog] 控件使用说明及在Ext 3.x下问题解决
- 关于C#应用第三方控件dll的使用方法及常见问题
- asp中遇到的几个问题——数据库连接,几个常见控件的使用问题及其解决
- 使用ext的分页常见的一个问题:有分页下表,但分页内容无法显示
- VS2010 使用控件常见问题
- C#.NET常见问题(FAQ)-如何使用2D绘图控件ZedGraph绘制坐标轴和坐标曲线
- Asp .NET使用控件常见问题大全(设计时选中、Button、TextBox、DropDownList、GridView、UpdatePanel 等)
- ext 多文件上传控件 Ext.ux.UploadDialog 使用中的问题
- GridView控件使用常见问题
- VS2010 使用控件常见问题
- 纯干货!视频控件VideoCapX的使用指南和常见问题合集
- ext 多文件上传控件 Ext.ux.UploadDialog 使用中的问题
- vc6.0 Combobox控件的使用问题
- 控件使用常见问题
- 【ExtAspNet学习笔记】ExtAspNet控件库中常见问题
- Ext.ux.UploadDialog 控件使用说明及在Ext 3.x下问题解决
- 使用ComboBox控件时遇到的小问题。。。
- EasyUI的combobox控件使用onchange 问题
- 纯干货!视频控件VideoCapX的使用指南和常见问题合集
- wxPython控件学习之UltimateListCtrl空间中使用ComboBox时,该控件一直在重绘的问题