combobox初始值的问题
|
lu_pp
2008-07-22
有一个combobox,下拉的选项是从服务器读取的,我想在修改操作的时候,能够根据值自动匹配
使用了setValue()方法, 现在的问题是,页面第一次进入的时候,文本框中显示的是 valueField的值,不是displayField中对应的文本. 但是以后的显示都是正常的(只要不重新刷新页面) 代码如下:
modelStore : new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : 'listallmodel.action'
}),
reader : new Ext.data.JsonReader({
root : 'list'
// totalProperty:'totalCount'
}, [{
name : 'modelid',
mapping : 'modelid'
}, {
name : 'model',
mapping : 'model'
}]),
remoteSort : false
}),
update_gamefileForm : function(data) {
var modelStore = this.modelStore;
modelStore.load();
var modelField = new Ext.form.ComboBox({
fieldLabel : '机型',
name : 'modelid',
hiddenName : 'modelid',
allowBlank : false,
blankText : '机型不能为空',
readOnly : true,
triggerAction : 'all',
anchor : '90%',
store : modelStore,
mode : 'local',
valueField : 'modelid',
displayField : 'model'
//value:data.modelid
});
//alert(data.modelid);
modelField.setValue(data.modelid);
return new Ext.FormPanel({
labelAlign : 'top',
frame : true,
width : 500,
fileUpload : true,
items : [modelField, {
xtype : 'textfield',
fieldLabel : 'jad文件',
name : 'jad',
allowBlank : false,
anchor : '90%',
height : 20,
inputType : 'file'
}, {
xtype : 'textfield',
fieldLabel : 'jar文件',
name : 'jar',
allowBlank : false,
anchor : '90%',
height : 20,
inputType : 'file'
}]
});
},
|
|
|
yneos
2008-07-22
同样遇到此问题,期待中
|
|
|
yneos
2008-07-23
搞定了
new Ext.form.ComboBox({
allowBlank: false,
allowNegative: false,
triggerAction: 'all',
displayField :'text',
valueField :'v',
//mode : 'local',
id:'test',
store : new Ext.data.Store({
autoLoad : true,
proxy: new Ext.data.MemoryProxy({rows:[{text:'全部',v:'1'},{text:'选项1',v:'2'},{text:'选项2',v:'3'},{text:'...',v:'4'}]}),
reader: new Ext.data.JsonReader({
root: 'rows',id:'v',remoteSort : false
},[{name:'text'},{name:'v',type:'int'}]
),
listeners :{
load:function(){
Ext.getCmp('test').setValue(2);
}
}
}),
editable :false,
lazyInit : false,
用这样的方法可以起到初始化的作用。 我查了一下ComboBox的源码,其中onLoad事件是这样写的: onLoad : function(){ if(!this.hasFocus){ return; } ... 后面的是关于初始化value一些操作,但原因在一开头没有focus就return了 |
|
|
yneos
2008-07-23
刚才代码没发好,重发一次:
new Ext.form.ComboBox({ allowBlank: false, allowNegative: false, triggerAction: 'all', displayField :'text', valueField :'v', id:'test', store : new Ext.data.Store({ autoLoad : true, proxy: new Ext.data.MemoryProxy({rows:[{text:'全部',v:'1'},{text:'选项1',v:'2'},{text:'选项2',v:'3'},{text:'...',v:'4'}]}), reader: new Ext.data.JsonReader({ root: 'rows',id:'v',remoteSort : false },[{name:'text'},{name:'v',type:'int'}] ), listeners :{ load:function(){ Ext.getCmp('test').setValue(2); } } }), editable :false }) |
|
|
yneos
2008-07-23
在store的onload事件中用setValue去初始化comboBox的值
|
|
|
popl2003
2008-07-23
学习了,谢谢分享..哈哈!不过这样的是不是麻烦了 难道Ext没有更好的办法吗?
|
|
|
lu_pp
2008-07-23
确实是可以用,非常感谢,再BS一下JAVAEYE的某些人,帮不了人
还把我的帖子评成新手 |
|
|
lu_pp
2008-07-23
这样的灵活性不是很强,我现在遇到了,不能把后台传来的值导入进去了
比较麻烦啊 |
|
|
chenxiaoji
2008-07-23
Ext.getCmp('test').setValue(2); 是什么意思?直接将combobox赋值为2吗?
|
|
|
lu_pp
2008-07-24
chenxiaoji 写道 Ext.getCmp('test').setValue(2); 是什么意思?直接将combobox赋值为2吗?
是的,valueField里面的 |

