动态数据源的Ext.form.ComboBox不能向静态数据源那样设置初始值,那样做的结果只会让设置的value值直接先是到界面上。
可用如下办法处理,就是在数据都准备好以后在初始化:
例如ter
var terminalModelStore = new Ext.data.JsonStore
({
root:'rows',
totalProperty:'recordCount',
url:'getTerminalModel.action',
fields: ['name', 'value'],
autoLoad:true
})
var terminalModel = new Ext.form.ComboBox
({
id:'trmlModel',
name: 'trmlModel',
hiddenName: 'terminalModel',
fieldLabel:'终端型号',
typeAhead: true,
//emptyText:'--请选择--',
//disabled: true,
mode: 'local',
triggerAction: 'all',
selectOnFocus:true,
forceSelection: true,
editable: false,
valueField: 'value',
displayField: 'name',
anchor:'95%',
//value:'all',
store: terminalModelStore
});
function initData(){
terminalModel.setValue('all');
Ext.form.ComboBox.superclass.setValue.call(terminalModel, '全部');
}
viewport.on('aferRender',initData());
Ext.form.ComboBox的另外一个用法曾经给我比较大的困扰,就是当表单提交后的取值。 Ext.form.ComboBox的值只能通过hiddenName定义的名称去取得。 比如上例:
name: 'trmlModel',
hiddenName: 'terminalModel',
request.getParameter(" terminalModel")取得值才是正确的, request.getParameter(" trmlModel ")实际上取得是显示的名称,即“ displayField ”对应的值。