开发者

EXTJS GridPanel Inside Window Is Not Loading Updated Data From Store When Window is Re-Opened

I have an EXT form that opens a window containing an GridPanel where the data store needs to get updated each time the form is submitted. The grid displays a list of files that are uploaded from the client computer. All of this works fine until I close the window and select a different group of files. The problem I am having is when the window containing the grid is closed and then re-opened, it is displaying the first set of files loaded previously instead of the new list of files submitted from the form. Hopefully this makes sense.

I have tried grid.getView().refresh() but that doesn't update the grid. Below is my code for the window, form, grid, and JSON store. If anyone has seen this before I would sure appreciate some advice. (apologies for the code formatting...had a lot of trouble getting it to be readable this text box)

//window that holds grid   
SPST.window.POGCheckInWindow = Ext.extend(SPST.window.WindowBaseCls, {
    id: 'POGCheckInWindow'  
    ,initComponent:function() {  
    var config = {  
            title: 'Check In POG Files'
            ,width      : 1000  
            ,height     : 500  
            ,maximizable: false  
            ,shadow : false  
            ,closeable: true  
            ,closeAction: 'hide'  
       ,items: [{  
       xtype   : 'checkin_results_grid'  
    ,id     : 'POGCheckInGrid'  
    ,height : 450  
             ,width  : 990  
        ,frame  : true }   
]};  
Ext.apply(this, Ext.apply(this.initialConfig, config));   
    SPST.window.POGCheckInWindow.superclass.initComponent.apply(this, arguments);  
    }    
});
Ext.reg('pog_checkin_window',SPST.window.POGCheckInWindow);  



//function to submit the form, load the store and open the window containing the gridpanel  
checkin:function() {  
    if (this.getForm().isValid()){  
        this.getForm().submit({  
        url: 'components/POG.cfc?method=uploadPOGTemp' + '&dsn=' + SPST_dsn  
        ,method: 'GET'  
        ,scope:this  
        ,success: function(form, action){  
var chkinwin = new SPST.window.POGCheckInWindow();  

Ext.getCmp('POGCheckInGrid').getStore().load({params:  {dsn: SPST_dsn, 
pogfiles: action.result.pogfiles, project_id: action.result.project_id}  
,callback: function(rec, options, success){      
Ext.getCmp('POGCheckInGrid').getView().refresh();  
            }  
            });  
            chkinwin.show();  
        }
        ,failure:this.showError  
        ,waitMsg:'Uploading files...'
        });  
    }  
}  



// create the data store for grid
    var chkstore = new Ext.data.JsonStore({  
    // JsonReader configuration  
    root     开发者_JS百科      : 'jsonlist' 
    ,fields        : chkfields  
    ,id    : 'chkstoreid'  
    // JsonStore configuration  
    ,autoLoad       : true  
    ,remoteSort     : true  
    ,autoDestroy: true
    ,sortInfo: {  
             field: 'POGNAME',  
             direction: 'ASC'  
        }
    ,url   : 'components/POG.cfc?method=getPOGTempFiles' + '&dsn=' + SPST_dsn  

});


//grid that loads inside ext window  
SPST.grid.POGCheckInGrid = Ext.extend(SPST.grid.GridPanelBaseCls, {  
view: new Ext.grid.GridView({  
    getRowClass: function(rec, idx, rowPrms, ds)  
    {  
    return rec.data.VERSION_DSC === 'INVALID VERSION#' ? 'invalid-cls' : '';  
    }  
}),  
initComponent : function() {    
var config = {  
    colModel   : chkcolModel  
    ,selModel   : chkselModel  
    ,store      : chkstore  
    ,autoDestroy: true  
    ,xtype      : 'checkin_results_grid'  
    ,buttons: [  
        {  
        text: 'Upload'  
        ,handler: this.loadPOGCheckin  
        ,scope  : this  
        },  
        {  
        text: 'Cancel'  
        ,handler: this.checkinwindowclose  
        ,scope  : this  
        }
]  
}  
Ext.apply(this, Ext.apply(this.initialConfig, config));  
SPST.grid.POGCheckInGrid.superclass.initComponent.apply(this, arguments);  
}  

,onRender  : function() {  
this.getBottomToolbar().bindStore(chkstore);  
SPST.grid.POGCheckInGrid.superclass.onRender.apply(this, arguments);  
}


From what I understood, you don't need to only refresh the view, but also reload the store according to the different set of files that you selected..

So, instead of doing

grid.getView().refresh() use grid.getStore().reload([new-options-if-required]);.. This will reload the store according to the options passed, if any, or reload the store according to the last load options.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜