在Store加上一个listeners时设置ComBox中对应的键值。
var nodeNameStore = new Ext.data.JsonStore({ url : Listener + '?className=etl.db.Node&methodName=getAllNodeJSON¶mCount=0', totalProperty : 'results', root : 'root', id : 'id', fields : ['id', 'name'], listeners : { load : function() { nodeName.setValue(nodeName.getValue()); } } }); nodeNameStore.load(); var nodeName = new Ext.form.ComboBox({ xtype : "combo", name : "nodeName", fieldLabel : "所在作业节点", displayField : 'name',// 下拉框显示的值 valueField : 'id', store : nodeNameStore, triggerAction : 'all', editable : false, allowBlank : false, emptyText : '请选择作业节点', selectOnFocus : true }); nodeName.setValue("1");
因为load()方法是异步加载,所以在setValue()里不能保证一定加载完成,因此要增加侦听事件。
但在Ext.grid中这样设置不起作用。需要再渲染一下。
{ id : "node", header : "节点名", dataIndex : 'node', sortable : true, width : 80, editor : nodeName, renderer : function(value, p, r) { var record = nodeNameStore.getById(value); if (record == undefined) { return ""; } else { return record.data.name; } } }
这样在设置时会自动显示正确的dispalyField;