这是我的组合框配置
{
xtype : 'combo',
fieldLabel : 'Select Field',
displayField : 'field_name',
valueField : 'field_id',
id : 'fields_combo_id',
store: new Ext.data.JsonStore({
proxy : new Ext.data.HttpProxy({url:eyefind.config.DATA_RETRIEVAL, method:'GET'}),
baseParams: { subject: 'fields' },
root: 'data',
id: 'field_id',
fields: ['field_name'],
autoload: true
}),
labelStyle : 'font-weight:bold; width:100px',
triggerAction : 'all',
clearFilterOnReset : false,
mode : 'local'
}
我以这种方式在外部函数中加载商店:
.....
var comboFields = Ext.getCmp('fields_combo_id');
comboFields.store.load();
comboFields.setValue(selectedFieldId);
.....
到目前为止selectFieldId已设置但在可见部分我看到一个值而不是displayText,商店看起来很好,我在那里正确设置了value:displayValue
对。
我是否会遗漏某些内容或是否必须使用此部分的其他功能?
我的Ext版本是3.2.0。
答案 0 :(得分:3)
您设置valuefield : 'field_id'
,但商店field_id
中没有fields
,
{
xtype : 'combo',
fieldLabel : 'Select Field',
displayField : 'field_name',
valueField : 'field_id', //This 'field_id' must be in store fields too.
id : 'fields_combo_id',
store: new Ext.data.JsonStore({
proxy : new Ext.data.HttpProxy({url:eyefind.config.DATA_RETRIEVAL, method:'GET'}),
baseParams: { subject: 'fields' },
root: 'data',
id: 'field_id', //This id is just for the store, not the record data.
fields: ['field_id','field_name'], // here, i add `field_id`
autoload: true // This should be autoLoad, remember JavaScript is case sensitive.
}),
labelStyle : 'font-weight:bold; width:100px',
triggerAction : 'all',
clearFilterOnReset : false,
mode : 'local'
}
另外,如果在外部函数中再次加载它,为什么要设置autoLoad : true
?
修改
当我运行comboFields.setValue(id);
时,我的id被分配给一个字段ID,它可以工作,我在我的组合上看到displayfield(不需要先下拉)。但是,如果在您的情况下,您的组合项目已突出显示,我想这是因为版本。不幸
我在Ext 3.3.0中进行了测试。
答案 1 :(得分:0)
请尝试以下代码。
var selectedFieldValue = Ext.getCmp('fields_combo_id').getRawValue();
var selectedFieldId = Ext.getCmp('fields_combo_id').getValue();
comboFields.setValue(selectedFieldId,selectedFieldValue);