2010-08-27 14 views
4

Je souhaite filtrer un magasin en sélectionnant une valeur dans la liste déroulante. lorsque je sélectionne la première valeur, il ne filtre pas, mais sur la sélection anyother valeur 2ème fois il fonctionne bien mon magasin a autoLoad = true voici mon codeEXTJS: Le magasin de filtres n'apparaît pas en premier clic sur le combo

xtype: 'combo' 
,fieldLabel: 'Online Type' 
,name:'OnlineType' 
,id:'cmbOnlineType' 
,store: common.getStore(accounts20.dataForms.onlinePayments._storeOnlineType, accounts20.dataForms.onlinePayments) 
,displayField:'OnlineType' 
,valueField:'OnlineType' 
,mode:'local' // important property when using store 
,typeAhead: true 
,triggerAction: 'all' 
,selectOnFocus:true 
,allowBlank:false 
,forceSelection:true 
,editable:true 
,tabIndex:4 
,width : 188 
,listeners:{ 
    select:function(){ 
     if(Ext.getCmp('onlinePay-hdnMode').value!="E") 
     { 
      Ext.getCmp('onlinePay-cmbChequeNo').clearValue(); 
      Ext.getCmp('onlinePay-cmbChequeNo').getStore().removeAll(); 
      Ext.getCmp('onlinePay-cmbCrAccount').clearValue(); 
     } 
     var store = Ext.getCmp('onlinePay-cmbCrAccount').getStore(); 
     if(this.getValue()=="Cheque" || this.getValue()=="Internet/Mobile") 
     { 
      Ext.getCmp('onlinePay-chkIncCharges').setValue(false); 
      if(this.getValue()=="Internet/Mobile") 
      { 
       Ext.getCmp('onlinePay-cmbChequeNo').disable(); 
       Ext.getCmp('onlinePay-chkIncCharges').disable(); 
      }else{ 
       Ext.getCmp('onlinePay-cmbChequeNo').enable(); 
       Ext.getCmp('onlinePay-chkIncCharges').enable(); 
      } 
      //Filter store on bank accounts 
      store.filter([ 
       { 
        property  : 'AccountTypeId', 
        value  : 'B',//Bank Accounts 
        anyMatch  : true, //optional, defaults to true 
        caseSensitive: false //optional, defaults to true 
       } , 
       //filter functions can also be passed 
       { 
        fn : function(record) { 
         return record.get('AccountTypeId') == 'B'; 
        }, 
        scope: this 
       } 
      ]); 
     }else if(this.getValue()=="Cash"){ 
      Ext.getCmp('onlinePay-chkIncCharges').setValue(true); 
      Ext.getCmp('onlinePay-chkIncCharges').disable(); 
      Ext.getCmp('onlinePay-cmbChequeNo').disable(); 
      //Filter store on cash accounts 
      store.filter([ 
       { 
        property  : 'AccountTypeId', 
        value  : 'C',//Cash Accounts 
        anyMatch  : true, //optional, defaults to true 
        caseSensitive: false //optional, defaults to true 
       } , 
       //filter functions can also be passed 
       { 
        fn : function(record) { 
         return record.get('AccountTypeId') == 'C'; 
        }, 
        scope: this 
       } 
      ]); 
     } 
    }//end of select function 
}//end of listener 

Répondre

0

Si l'événement select est déclenché deux fois en utilisant la configuration de la mémoire tampon, il mettra l'événement en mémoire tampon pour en déclencher un seul. En outre, le lien ci-dessus est un doublon de http://www.sencha.com/forum/showthread.php?134147 qui a été corrigé dans 4.0.2 (au moins c'est ce que dit notre bug tracker).