Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 存储重新加载后选择Ext组合框';我不能正常工作_Javascript_Extjs - Fatal编程技术网

Javascript 存储重新加载后选择Ext组合框';我不能正常工作

Javascript 存储重新加载后选择Ext组合框';我不能正常工作,javascript,extjs,Javascript,Extjs,这是我的组合框配置 { 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.confi

这是我的组合框配置

{
    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);
        .....
目前已设置selectedFieldId,但在可见部分,我看到的是一个值,而不是displayText,存储看起来很好,并且我在那里正确设置了
value:displayValue

我是否错过了一些东西,或者我必须为这个部分使用一些其他功能


我的版本是3.2.0。

请尝试以下代码

var selectedFieldValue = Ext.getCmp('fields_combo_id').getRawValue();
var selectedFieldId    = Ext.getCmp('fields_combo_id').getValue();
comboFields.setValue(selectedFieldId,selectedFieldValue);

您设置了
valuefield:'field\u id'
,但商店的
字段中没有
field\u id

{
    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'
}
另外,如果在外部函数中再次加载,为什么要设置
自动加载:true

编辑

当我运行
comboFields.setValue(id)时,其中我的id被分配给一个字段id,它起作用,我在我的组合框上看到displayfield(无需先下拉)。但是,如果,在您的情况下,您的组合项被突出显示,我猜这是因为版本。不幸的是

我在Ext3.3.0中测试过它。

我已经尝试过了,但这一点都没有帮助,它在两种情况下都返回相同的值。@vaske:如果您不想在post中使用valuefield,那么可以使用
comboFields.setRawValue('Value')同意aoutoLoad,同时缺少正确的文件id,但我这样做,在combobox中我再次看到值而不是displayValue,但当我单击并下拉以查看列表时,我的displayValue已突出显示,什么是好的,但仍然不是100%:(是的,实际上它现在可以工作了,只是在我用combobox打开窗口的第一种情况下不行,一旦我重新打开它,它就会按预期工作,所以最初它会高亮显示并将值作为displayValue,在关闭/打开它后,它会按预期工作,无论如何,谢谢!