EXTJS: Сохранение фильтров не происходит при первом нажатии комбинации

я хочу отфильтровать магазин при выборе значения из комбо. когда я выбираю первое значение, оно не фильтрует его, но при выборе любого другого значения во второй раз оно работает хорошо, в моем магазине есть autoLoad = true, вот мой код

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

person Saima    schedule 27.08.2010    source источник


Ответы (2)


Определить lastQuery: ''

http://dev.sencha.com/deploy/dev/docs/source/Combo.html#prop-Ext.form.ComboBox-lastQuery

person Mark    schedule 28.09.2010
comment
Я трачу около 2 часов, пытаясь понять, почему мой фильтр не работает, вы меня спасли, спасибо! - person igor; 15.05.2013

Если событие select запускается дважды, используйте конфигурацию буфера, оно будет буферизовать событие только для одного запуска. Кроме того, приведенная выше ссылка является дубликатом http://www.sencha.com/forum/showthread.php?134147, который был исправлен в версии 4.0.2 (по крайней мере, так говорит наш баг-трекер).

person Mitchell Simoens    schedule 06.09.2011