Keeping modified records of EditorGridPanel while paging

Code in this post can be obsolete, however, principles and theory may still apply.
If you modify records of an editable grid with paging and if you then page-out, your changes are lost. Well, they are not lost in fact unless you have set pruneModifiedRecords:true on the strore. The modifications are still available so we just need to apply them. Here is the code fragment that does it:
pruneModifiedRecords must be false (the default) for this to work.

Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Pin on PinterestEmail this to someone
Follow me:


I'm a well seasoned developer, consultant and educator of web applications based mainly on Sencha libraries, PHP, MySQL and Node.js. Besides (Apple) computers, I love photography and mountain biking.
Follow me:

Latest posts by Saki (see all)


  1. preji says

    Am using below code but the data is not retaining while moving to another page

    var dsnew = new{
    proxy: new,
    remoteSort: true,
    pruneModifiedRecords :false,
    reader: new{},
    {name: ‘IsSlected’,type: ‘bool’},
    {name: ‘RecNo’,type: ‘int’},

    update:{scope:this, fn:function(store) {
    var modified = store.getModifiedRecords();
    for(var i = 0; i < modified.length; i++) {
    var r = store.getById(modified[i].id);
    if(r) {
    var changes = modified[i].getChanges();
    for(p in changes) {
    if(changes.hasOwnProperty(p)) {
    r.set(p, changes[p]);

    } // eo changes loop
    } // eo modified loop
    }} // eo load listener
    } // eo listeners

  2. says

    You can modify this line :

    var r = store.getById(modified[i].id);

    by your own adaptation if you are an unique colum id :

    var r = store.getAt(store.find(‘name’, modified[i] ;

    Saki, modified[i].id, is changed after each loading (firebug).

  3. Corey says

    I don\’t know why, but I was getting duplicate entries in the modified collection after I page out and page back. Mind you, I\’m doing server-side paging.

    So after getting the changes on this line:

    var changes = modified[i].getChanges();

    Remove the record like so:

    store.modified.splice(i, 1);

    And you\’re sweet! It gets added again when you call set() on the record anyway.

    Despite the fact I\’d imagine that modified collection is meant to be private/protected, it works.

  4. Anon says

    One note… In 3.3.1 as Corey stated… Duplicates appear in the modified array. The link to the store is being broken simply using the code above. It is very close, but not quite there. The complete code to accomplish this without losing the link is below…

    var modified = store.getModifiedRecords();
    this.modified = [];
    for (var x = 0; x < modified.length; x++)
    var r = store.getById(modified[x].id);

    if (r)
    var changes = modified[x].getChanges();
    for (p in changes)
    if (changes.hasOwnProperty(p))
    { r.set( p, changes[p] ); }
    { this.modified.push(modified[x]); }

We will be happy to hear back from you

Please Login to post a comment