extjs: как установить значение для выпадающего списка при загрузке - PullRequest
3 голосов
/ 22 марта 2011
  1. Я ищу load listener, который, когда выпадающий список активирован, load будети вызовите ajax на сервер, чтобы получить правильное отображаемое значение для выпадающего списка.Но функция загрузки никогда не вызывается .. как я могу это исправить?

  2. Я хочу отобразить текст перед списком, поэтому я добавил атрибут fieldLabel: 'Save logs to:'.Но текст не отображается.

Спасибо, Йони

this.log_save_combo = new Ext.form.ComboBox
    ({
        store: ['Device', 'USB1', 'USB2']
        , id: 'cplogs_log_save_combo'
        , name: 'cplogs_log_save_combo'
        , triggerAction:'all'
        , fieldLabel: 'Save logs to:'
        , editable: false
        //, value: "Device"
        , listeners: {
                'load': function(){
                        alert("in load function");
              }
    });

Ответы [ 5 ]

3 голосов
/ 16 октября 2012

В качестве общего решения проблемы, я пошел с

listeners:{
    scope: this,
    afterRender: this.selectFirstComboItem
}

с

selectFirstComboItem: function(combo) {
    // This will tell us if the combo box has loaded at least once
    if (typeof combo.getStore().lastOptions !== "undefined") {
        // Grab the first value from the store
        combo.setValue(combo.getStore().first().get(combo.valueField));
    }
    else {
        // When the store loads
        combo.getStore().on("load", function(store, items){
            // Grab the first item of the newly loaded data
            combo.setValue(items[0].get(combo.valueField));
        });
    }
}
1 голос
/ 27 июля 2011

Одна из вещей, которую я хотел сделать, это выбрать значение по умолчанию из хранилища, которое будет выбрано при рендеринге выпадающего списка.Установка значения поля со списком на первое значение из магазина работала довольно хорошо.

Ext.create('Ext.form.field.ComboBox', {
...
value : this.myStore.first().get('aFieldName')
0 голосов
/ 18 февраля 2014

Нет события загрузки для комбо. Что вы можете сделать, это загрузить данные в комбинированном из хранилища при загрузке вашей формы. После этого вы можете установить уровень поля в комбо-событии select.

Пример:

listeners:{
    select: function(){
       Ext.getCmp('id_of_the_field')
      .getEl()
      .down('label.x-form-cb-label')
      .update('Save logs to:');                             
    }
}
0 голосов
/ 26 августа 2013
  1. Первый Загрузка магазин с store.load()
  2. В обратном вызове установите значение с помощью setValue()

Пример:

store.load({
        callback: function () {
             form.findField('name_of_the_combo').setValue('your_value');
         }
    });
0 голосов
/ 22 марта 2011

Для комбо-события нет события load , следовательно, написанный вами код не выполняется.У вас уже есть хранилище, определенное значениями. Вы пытаетесь загрузить новые значения в хранилище, которое прикреплено к комбинированному списку?Что вы подразумеваете под "комбобокс активен"?

Чтобы загрузить поле со списком со значениями с сервера, вам нужно только загрузить хранилище.О том, как загрузить комбинированный список, см. в этой статье .

----------------------------------------- ОБНОВИТЬ -----------------------------------------

  1. Вы пытаетесь загрузить форму со значениями?В этом случае вы можете загрузить значения, используя метод загрузки, доступный с BasicFrom.См. этот пример .Несмотря на то, что он использует XML, вы можете легко изменить загрузку данных из JSON.

  2. Чтобы отобразить поле метки, вам нужно установить свойство макета вашего контейнера как

    макет: «форма»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...