Problem : I have defined DeviceGrid as an extension to the Ext.grid.GridPanel. A MoveGroupPanel is an extension to the Ext.Panel and one is created when someone clicks a move group in the tree view and then added to a tabPanel. The first time I click on each of the move groups the tabs are created properly and the grids show the correct data. If I close one of the panels and reopen it, all of the grids on each of the tabs show the exact same data from the first panel that I opened. It seems something is getting cross wired. When I break into the code and request each of the panels by ID their deviceGrid ID's are all different and the stores are all different. Can someone take a look at the code and explain what is happening.

(This is the tab panel class that creates a move group tab panel.)
Code:
loadMoveGroup : function(id, path){
              var eid = 'page-movegroup-' + id;
              var tab = this.getComponent(eid);
              if(tab){
                  this.setActiveTab(tab);
              }
              var movePanel = new MoveGroupPanel(id, {
                  id: eid,
                  title: 'Move Group (' + id + ')',
                  path:path,
                  closable:true
              });
              var p = this.add(movePanel);
 
              this.setActiveTab(p);
          },
(Device Grid Class)
Code:
 
 
DeviceGrid = function(viewer, config) {
  this.viewer = viewer;
  //Ext.apply(this, config);
 
  this.record = Ext.data.Record.create([
          {name: 'DeviceId'},
          {name: 'DeviceName'},
          {name: 'ApplicationGroup'},
          {name: 'MoveGroup'},
          {name: 'MoveDate', type:'date'},
          {name: 'MoveType'},
          {name: 'Application'},
          {name: 'DeviceType'},
          {name: 'Model'}
      ]);
 
  this.store = new Ext.data.Store({
          proxy: new Ext.data.HttpProxy({
              url: 'DeviceMoveInfoHandler.ashx',
              method: 'GET'
          }),
 
          reader: new Ext.data.JsonReader({
              root: 'Rows',
              totalProperty:'TotalCount',
              id: 'DeviceId'},
              this.record
          ),
 
          listeners: {
              beforeload: function(S, R, O) {
              }
          },
 
          remoteSort: true
      });
 
  this.store.setDefaultSort('DeviceName', "ASC");
 
  this.columns = [{
      id: 'DeviceId',
      header: "Id",
      dataIndex: 'DeviceId',
      hidden: true,
      sortable:true,
      width: 100
    },{
      header: "DeviceName",
      dataIndex: 'DeviceName',
      width: 200,
      renderer: this.formatName,
      sortable:true
    },{
      id: 'ApplicationGroup',
      header: "ApplicationGroup",
      dataIndex: 'ApplicationGroup',
      width: 150,
      sortable:true
    },{
      id: 'MoveGroup',
      header: "MoveGroup",
      dataIndex: 'MoveGroup',
      width: 150,
      sortable:true
    },{
      id: 'MoveDate',
      header: "MoveDate",
      dataIndex: 'MoveDate',
      renderer:  this.formatDate,
      width: 150,
      sortable:true
    },{
      id: 'MoveType',
      header: "MoveType",
      dataIndex: 'MoveType',
      width: 150,
      sortable:true
    },{
      id: 'Application',
      header: "Application",
      dataIndex: 'Application',
      width: 150,
      sortable:true
    },{
      id: 'DeviceType',
      header: "DeviceType",
      dataIndex: 'DeviceType',
      width: 150,
      sortable:true
    },{
      id: 'Model',
      header: "Model",
      dataIndex: 'Model',
      width: 150,
      sortable:true
    }];
 
  var config = config || {}; 
  var defConfig = {
      region: 'center',
      loadMask: {msg:'Loading Devices...'},
      iconCls:'icon-grid',
      enableColumnMove:false,
 
      sm: new Ext.grid.RowSelectionModel({
          singleSelect:true
      }),
 
      viewConfig: {
      },
      bbar: new Ext.PagingToolbar({
              pageSize: 50,
              store: this.store,
              displayInfo: true,
              displayMsg: 'Displaying devices {0} - {1} of {2}',
              emptyMsg: "No devices found"
          //            ,items:[
          //                '-', {
          //                pressed: true,
          //                enableToggle:true,
          //                text: 'Show Preview',
          //                cls: 'x-btn-text-icon details',
          //                toggleHandler: toggleDetails
          //            }]
          })
      };
 
  Ext.apply(config, defConfig);
 
  DeviceGrid.superclass.constructor.call(this, config);
 
 
  var closeStore = function() {
      this.store.purgeListeners();
      this.store.removeAll();
  }
 
  this.on('beforeDestroy', closeStore, this);
 
};
 
Ext.extend(DeviceGrid, Ext.grid.GridPanel, {

  loadDevices : function(params) {
      if (!params) {
          params = {};
      }
      this.store.baseParams = params;
      var baseParams = {params:{start:0, limit:50}}
      //Ext.applyIf(baseParams.params, params);
 
      this.store.load(baseParams);
  },
 
  formatDate : function(date) {


      if (!date) {
          return '';
      }
      return date.dateFormat('m/d/y');
  },
 
  formatName: function(value, p, record) {
      return String.format(
              '<b>{0}</b>',
              value
          );
  }
});
(MoveGroupPanel Class)
Code:
MoveGroupPanel = function(moveGroupId, config){
  this.moveGroupId = moveGroupId;
  Ext.apply(this, config);
 
  this.deviceGrid = new DeviceGrid(null, {
      border:false,
      enableColumnMove:false,
      closable:true
  });
 
  var params = {filter:"MoveGroupId='" + moveGroupId + "'"};
  this.deviceGrid.loadDevices(params);
 
  MoveGroupPanel.superclass.constructor.call(this, {
      layout:'border',
      items: [{
                 region: 'north',
                 layout:'fit',
                 border:false,
                 bodyStyle: 'padding:10px;',
                 html: '<p>hello '  + moveGroupId + '</p>',
                 height:400,
                 maxSize: 400,
                 closable:true,
                 split:true
              }, this.deviceGrid]
 
  });
};
 
Ext.extend(MoveGroupPanel, Ext.Panel, {
  listeners:{
      beforeDestroy:function(panel) {
          alert('destroying grid');
          //panel.purgeListeners();
          //this.deviceGrid.destroy();
          return false;
      },
  deviceGrid: function() { return this.deviceGrid; }
 
  }
});