2012-08-10 5 views
1

J'ai une liste déroulante (par exemple, propriétaire du changement). Lorsqu'un utilisateur sélectionne une valeur de la liste déroulante, je demande à l'utilisateur s'il est sûr de changer de propriétaire. S'il clique sur 'Oui', je mets à jour l'enregistrement dans la base de données. Tout fonctionne bien jusqu'à ce point.Extjs ComboBox setValue

Maintenant, si l'utilisateur sélectionne une valeur et clique sur 'Non' à l'invite (après avoir sélectionné la valeur dans la liste déroulante). Le combo conserve la nouvelle valeur et ne la ramène pas à l'ancienne valeur. J'ai essayé setValue/charge etc, mais aucun réglage est-il de nouveau l'ancienne valeur du clic sur le n °

Mon code ressemble à ceci

 combo = new Ext.form.ComboBox({ 
         store: storeJson, 
         xtype: 'combo', 
         displayField:'name', 
         valueField: 'id', 
         mode: 'local', 
         id: 'privateTo', 
         name: 'privateTo', 
         typeAhead: false, 
         triggerAction: 'all', 
         lazyRender: true, 
         editable:false, 
         listeners: {select: changeOwner} 
        }); 

var changeOwner = function(combo, record, index) {    

      Ext.MessageBox.confirm("Change Owner","Are you sure you want to change owner?",function(btn){ 
      if (btn == "yes") { 
       Ext.Ajax.request({ 
        url: 'somUrl', 
        method: 'PATCH', 
        success: function(result, request) { 
         msg('Owner changed', 'Owner changed'); 
        }, 
        failure: function(result, request) { 
         Ext.MessageBox.alert('Error', "Unable to change owner"); 
         Ext.getCmp("customizationGrid").getStore().reload(); 
        } 
       }); 
      } else { 
       var d = Ext.getCmp('customizationGrid').getSelectionModel().selection; 
       var rec = combo.store.getById(d.record.json.privateTo); 
       Ext.getCmp("privateTo").setValue(rec.data.name); 

      } 
      }); 
     } 

Répondre

0

La dernière valeur sélectionnée de votre combo est déjà présent dans le gestionnaire de sélection .

Vous pouvez simplement faire:

...

} else { 
    combo.setValue(combo.startValue); 
} 
1

enlèverait juste le bloc else { ... }, il faut prendre soin de NO. :-)