2010-10-04 7 views
4

Je récapitule le problème comme ceci.ExtJS combo charger et désactiver

-je utiliser un formulaire pour modifier les informations de l'utilisateur qui est chargé de la DB (je reçois ces valeurs par un JSONStore)

Je souhaite activer/désactiver un combo en fonction de la valeur chargée d'un autre combo.

Exemple: désactiver Combo2 si la valeur chargée dans combo1 = 0

  • si je charge combo1 = 1, Combo2 = 12: Tout bien
  • si je charge combo1 = 0, Combo2 = 15: Désactiver combo2

Des idées? Merci

Répondre

2

Un auditeur comme celui-ci devrait faire le travail:

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

L'événement de changement pourrait ne pas tirer sans changement interactif. – Lloyd

+0

Je vois maintenant ce que vous voulez dire, même s'il n'est pas tout à fait clair ce que OP veut dire par "valeur est chargée en combo". S'il veut dire valeur chargée dans JsonStore, utilisez l'événement 'load' de JsonStore pour cela. – Mchl

+0

L'événement de modification ne semble pas fonctionner. Les données sont chargées dans le formulaire en utilisant la commande suivante (formEditUser est un GridPanel, et il est dans une fenêtre ExtJS): formEditUser.getForm(). Load ({ url: 'gen/jsonUser.php', params : {IDUser: IDUser}, waitMsg: 'Chargement en cours ...' }); Après cela, j'ai besoin de lire les données chargées dans combo1. Si la valeur est 0, combo2 doit être réinitialisé (clearValue()) et désactivé. – Danilo

0

segment de code de travail:

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. 
                },