Ext下拉框使用方案
//定义
var WardLoc = new Ext.form.ComboBox({
name : 'WardLoc',
id : 'WardLoc',
typeAhead:true,
store : new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : "XXXX/XXXX" //在url对应后台方法里,处理传入的数据
}),
reader : new Ext.data.JsonReader({
root : 'rows',
totalProperty : 'results',
fields : [{
'name' : 'LocDes',
'mapping' : 'LocDes'
}, {
'name' : 'LocDr',
'mapping' : 'LocDr'
}]
}),
baseParams : {
className : '类名',
methodName : '方法名',
type : '查询类型'
}
}),
tabIndex : '0',
listWidth : '400',
height : 18,
width : 191,
xtype : 'combo',
displayField : 'LocDes', //显示值
valueField : 'LocDr', //实际值
hideTrigger : false,
queryParam : 'HsDr',
forceSelection : true,
triggerAction : 'all',
minChars : 1,
pageSize : 10,
typeAhead : true,
typeAheadDelay : 1000,
loadingText : 'Searching...'
});
//放入对应的位置
tobar.addItem("-","下拉框",WardLoc);
//下拉框加载前需要传入的参数赋值
WardLoc.store.on("beforeLoad",function(){
var laststr1=WardLoc.lastQuery
if (laststr1!=undefined)
WardLoc.store.baseParams.ward=laststr1;
WardLoc.store.baseParams.HsDr=1;
WardLoc.store.baseParams.typ="Ward";
});
//触发加载完事件
var value="123456" //实际值
WardLoc.store.on("load",function(){
var length = this.data.length
for(var i = 0; i<length ;i++){
if (this.getAt(i).data.LocDr == value ){
Ext.getCmp("WardLoc").setValue(value);
Ext.getCmp("WardLoc").disable(); //选中后,同时不可选择
}
}
});
//执行了load,才会真正从后台获取数据
WardLoc.store.load({
params : {
start : 0,
limit : 200
},
})
还可以通过callback函数合并,如下
WardLoc.store.load({
params : {
start : 0,
limit : 200
},
callback : function() {
var length = this.data.length
for(var i = 0; i<length ;i++){
if (this.getAt(i).data.LocDr == session['LOGON.CTLOCID'] ){
Ext.getCmp("WardLoc").setValue(session['LOGON.CTLOCID']);
Ext.getCmp("WardLoc").disable();
}
}
}
})