????? 前些时候要写更改下拉列表的默认值,并且更改下拉列表时,动态更改表单中的数据。不过在网上找了不少资料,可惜没找到有参考价值的资料,大部分作者大概没有自己检验过。下面的代码也希望对你有点帮助,绝对原版!
?
//加载下拉列表的值<vId--vTypeName>
var st = new Ext.data.Store({
???
???proxy : this.proxy||new Ext.data.HttpProxy({url:'ui/modules/speedy/cm/VoucherTypeSet/getTcmVoucherTypeSetIdAndVTypeName.action'}),
???reader : new Ext.data.JsonReader({
?????totalProperty:'totalCount',
?????id : "id",
?????root : "result"},
?????[{name : 'vId',???? mapping : 'vId'},
?????{name : 'vTypeName',mapping : 'vTypeName'}]
?????)
??});
----------------------------------------------------------
//下拉列表的定义,名字为‘凭证类型’
this.vouTypeChang = new Ext.form.ComboBox({
???store???????? : st,
???fieldLabel??? : '凭证类型',
???mode????????? : 'local',
???triggerAction : 'all',
???id??????????? :? 'vTypeId',
???name????????? :? 'speedy.cm.tcmVoucherDebSet.vTypeId',
???valueField??? : 'vId',
???displayField? : 'vTypeName',
???hiddenName??? : 'Id',
???forceSelection: true,
???readOnly????? : true,
???width???????? : 200
???????
??});
?
st.load();//加载数据源
-------------------------------------------------------
//设置下拉列表的默认值
??st.on('load',function(store,record,opts){
???
????//第一项值的vId
?????? var fId = store.getRange()[0].data.vId;
???? //这种方法可以获得第一项的值?,也是我们要得到的值???????
?????? this.firstValue =store.getRange()[0].data.vTypeName;
//?????? Ext.Msg.alert('下拉列表的第一个值',this.firstValue);
??????
//设置第一项的值为this.firstValue
?????? this.vouTypeChang.setValue(this.firstValue);
//更改下拉列表的值时,向url传递参数vTYpeId
????? this.store.baseParams.vTypeId=this.firstValue;
//重新加载数据,实现了更改下拉列表时,动态更新表单中的数据
????? this.store.load();
?
???? }.createDelegate(this)? );