Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ext.data.Store's each() is ignoring filtered records

I am using Ext.data.Store's each(). But this method, when store is filtered, only loops over the filtered records. Do we have any other method or work around to loop over all the records of a store even when a filter is applied on the store.

  var attStore = Ext.getStore("myStore");
        var allRecords = attStore.snapshot || attStore.data;
        allRecords.each(function (record) {
            if (record.data.IsUpdated) {
                record.set('updatedByUser', true);
            }
            else {
                record.set('updatedByUser', false);
            }
             record.commit();
        });

The line var allRecords = attStore.snapshot || attStore.data;actually returns all the records as intended but when I try to update that record (or one of the property in that record using record.data.property = something) That record is not getting updated.

Thanks

like image 711
SharpCoder Avatar asked Oct 17 '13 13:10

SharpCoder


3 Answers

use this

var allRecords = store.snapshot || store.data;

and loop like this

allRecords.each(function(record) {
    console.log(record);
});

see this store snapshot

like image 189
kuldarim Avatar answered Nov 11 '22 00:11

kuldarim


On Sencha Touch 2.3 I needed to do the following to bypass the filter.

var allRecords = store.queryBy(function(){return true;});

allRecords.each(function(r){
    doStuff();
});
like image 36
AnthonyVO Avatar answered Nov 11 '22 02:11

AnthonyVO


Starting from Extjs 5 use the following

Ext.data.Store.each( fn, [scope], [includeOptions] )

i.e.

store.each(function(record) {
    // ...
}, scope, {filtered: true});
like image 41
Benjamin E. Avatar answered Nov 11 '22 01:11

Benjamin E.