2010-10-04 2 views
4

Я суммирую проблему следующим образом.Комбинированная загрузка и отключение ExtJS

Я использую форму для редактирования информации о пользователе, которая загружается из БД (я получаю эти значения через JSONStore)

Я хочу, чтобы включить/отключить комбо в зависимости от загруженного значения другого комбо.

Пример: отключение combo2 если загружен значение в Combo1 = 0

  • если груз Combo1 = 1, combo2 = 12: Все отлично
  • если груз Combo1 = 0, combo2 = 15: Отключить combo2

Любые идеи? Благодаря

ответ

2

Слушатель, как это должно сделать работу:

formEditUser.getForm().on('actioncomplete',function(form,action) { 
    if(combo1.getValue() == 0) { 
    combo2.disable(); 
    } else if (combo1.getValue() == 1) { 
    combo2.enable(); 
    } 
}) 
+0

Событие изменения не может стрелять без интерактивного изменения. – Lloyd

+0

Теперь я понимаю, что вы имеете в виду, хотя не совсем ясно, что означает OP, поскольку значение загружается в комбо. Если он означает значение, загруженное в JsonStore, то для этого используйте событие 'load' JsonStore. – Mchl

+0

Событие изменения не работает. Данные загружаются в форму с помощью следующей команды (formEditUser - это GridPanel, и она находится в окне ExtJS): formEditUser.getForm(). Load ({ URL: 'gen/jsonUser.php', params : {IDUser: IDUser}, waitMsg: 'Загрузка ...' }); После этого мне нужно прочитать данные, загруженные в combo1. Если значение равно 0, то combo2 следует сбросить (clearValue()) и отключить. – Danilo

0

рабочий код сегмента:

enter code here 
              {xtype: 'fieldset', 
              items: [{xtype: 'combo', 
                hiddenName: 'category[line]', 
                fieldLabel: 'Category', 
                store: categories, 
                emptyText: 'Select', 
                triggerAction: 'all', 
                mode: 'local', 
                displayField: 'category_name', 
                valueField: 'id', 
                anchor: '50%', 
                listeners:{ 
                 select:{fn:function(thisCombo, value) { 
                  var combo = Ext.getCmp('combo-subcats');  
                   combo.enable(); 
                   //combo.clearValue(); 
       /* category is part of the json data inside the subcat. So the first select choose the category - then filter out only that bit and populate the subcat combo. Make sense?     */       combo.store.filter('category', values.data['category']); 
                  }} 
                 } 
                }, 
                {xtype: 'combo', 
                hiddenName: 'subcats[line]', 
                disabled: true, 
                id: 'combo-subcats', 
                fieldLabel: 'Sub Cat', 
                store: getSubcatsStore(), 
                emptyText: 'Select', 
                triggerAction: 'all', 
                mode: 'local', 
                displayField: 'name', 
                valueField: 'id', 

                anchor: '50%', 
                lastQuery: '' //<-- this is what makes it work. 
                }, 
Смежные вопросы