Ext combobox select после перезагрузки магазина не работает должным образом - PullRequest
4 голосов
/ 03 июня 2011

Вот моя конфигурация комбинированного списка

{
    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.

Мне что-то не хватает или мне нужно использовать другие функции для этой части?

Моя версия Ext - 3.2.0.

Ответы [ 2 ]

3 голосов
/ 03 июня 2011

Вы установили valuefield : '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'
}

нет field_id А также, почему вы устанавливаете autoLoad : true, если вы снова загружаете его в свою внешнюю функцию?

РЕДАКТИРОВАТЬ

Когда я запускаю comboFields.setValue(id);, в котором мой идентификатор присваивается одному из идентификаторов полей, он работает, и я вижу поле отображения в своем комбо (не нужно сначала выпадать).Но, если в вашем случае ваш комбо-элемент выделен, я думаю, это из-за версии.К сожалению, я проверял это в Ext 3.3.0.

0 голосов
/ 03 июня 2011

Попробуйте следующий код.

var selectedFieldValue = Ext.getCmp('fields_combo_id').getRawValue();
var selectedFieldId    = Ext.getCmp('fields_combo_id').getValue();
comboFields.setValue(selectedFieldId,selectedFieldValue);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...