1. #1
    Sencha User
    Join Date
    Oct 2010
    Posts
    159
    Vote Rating
    0
    mdavis6890 is on a distinguished road

      0  

    Default Answered: ComboBox Store filters twice on first click

    Answered: ComboBox Store filters twice on first click


    **Moved from bugs forum***

    I've got an 'expand' listener on my combobox that I want to use to filter the store. Unfortunately, the store seems to filter or load twice on the first click, once the way it's supposed to and a second time with no filter. Subsequent clicks filter properly.

    PHP Code:

    Ext
    .define('Test', {
        
    extend 'Ext.data.Model',
        
    fields : [{name 'fname'type 'string'}]
    });
    Ext.create('Ext.form.field.ComboBox', {
        
    renderTo Ext.getBody(),
        
    store Ext.create('Ext.data.Store', {
            
    model 'Test',
            
    data : [{fname 'Michael'}, {fname 'Jeffrey'}],
            
    listeners : {
                
    'datachanged' : function (store) {
                    
    console.log(store.getCount());
                }
            }
        }),
        
    valueField 'fname',
        
    displayField 'fname',
        
    queryMode 'local',
        
    listeners : {
            
    expand : function (picker) {
                var 
    store picker.getStore();
                
    store.filter('fname''Michael');
            }
        }
    }); 
    So what can I do to make this work right? I've spent many hours to get to this point, and any suggestions would be greatly appreciated.

  2. See:

    http://docs.sencha.com/ext-js/4-0/#!...erty-lastQuery

    I think you need to add lastQuery: '' to your config. Whilst this is documented I must say it's always felt like a bug to me.

  3. #2
    Sencha User skirtle's Avatar
    Join Date
    Oct 2010
    Location
    UK
    Posts
    3,341
    Answers
    498
    Vote Rating
    248
    skirtle has much to be proud of skirtle has much to be proud of skirtle has much to be proud of skirtle has much to be proud of skirtle has much to be proud of skirtle has much to be proud of skirtle has much to be proud of skirtle has much to be proud of skirtle has much to be proud of skirtle has much to be proud of

      0  

    Default


    See:

    http://docs.sencha.com/ext-js/4-0/#!...erty-lastQuery

    I think you need to add lastQuery: '' to your config. Whilst this is documented I must say it's always felt like a bug to me.

  4. #3
    Sencha User
    Join Date
    Oct 2010
    Posts
    159
    Vote Rating
    0
    mdavis6890 is on a distinguished road

      0  

    Default


    I'm almost literally in tears right now. I have spent dozens of hours on this in pursuit of a nice, clean and very generalized linked-combo plugin. I think I finally have it.

    Must run now, but I'll post my plugin later once I know it's working properly.

    Thanks!!

  5. #4
    Sencha User
    Join Date
    Oct 2010
    Posts
    159
    Vote Rating
    0
    mdavis6890 is on a distinguished road

      0  

    Default


    PHP Code:

    Ext
    .define('IDB.selectbox.LinkedComboPlugin', {
        
    extend'Ext.AbstractPlugin',
        
    alias'plugin.linkedcombo',
        
    /*    Must pass object like    {
            comboId : 'myLinkedCombo',
            thisField : 'thisField',
            thatField : 'thatField'
        }    */
        
    linkedCombo undefined// Configuration object that looks like above
        
    combo undefined// The combo attached to this plugin

        
    getLinkedCombo : function () {
            return 
    Ext.ComponentQuery.query('#' this.linkedCombo.comboId)[0];
        },

        
    getLinkedRecord : function () {
            var 
    lc this.getLinkedCombo(),
                  
    store lc.store,
                  
    linkedRecord store.findRecord(lc.valueFieldlc.getValue(), 0falsetruetrue);
            return 
    linkedRecord;
        },

        
    onComboExpand : function (pickereOpts) {
             var 
    lc this.getLinkedCombo(),
                   
    record this.getLinkedRecord(),
                   
    filterValue,
                   
    filterStore picker.getStore(),
                   
    remoteField this.linkedCombo.thatField,
                   
    filterProperty this.linkedCombo.thisField;

              if (
    record) {
                
    filterValue record.get(remoteField);
                
    filterStore.clearFilter();
                
    filterStore.filter([{
                    
    property filterProperty,
                    
    value filterValue,
                    
    exactMatch true
                
    }]);
              }
        },
        
    init : function (combo) {
            
    this.combo combo;
            
    Ext.apply(combo, {
                
    lastQuery ''
            
    });

            
    // Filter this combo on expand event, based on value of linked combo.
            
    combo.on('expand'this.onComboExpandthis);

            
    // When the linked combo is changed by the user, clean this combo's value.
            
    combo.mon(this.getLinkedCombo(), 'select', function () {
                
    combo.clearValue();
                
    combo.fireEvent('select');
            }, 
    this);
        }
    }); 

Thread Participants: 1

film izle

hd film izle

film sitesi

takipci kazanma sitesi

takipci kazanma sitesi

güzel olan herşey

takipci alma sitesi

komik eğlenceli videolar