日期:2014-05-16  浏览次数:20442 次

extjs 用cookie保存用户习惯隐藏列 刷新之后列显示不正常
如题,这是在网上查找到的代码,第一次登陆后,隐藏列刷新都正常,但是第二次继续隐藏列时,第一次隐藏的列就不隐藏了!如果将已隐藏的列恢复显示的话,那全部列都将显示!请问,这是怎么回事? 
stateful:true,   
    stateId:'cookiegrid',   
    //下面有把cm的该事件托管给grid   
    stateEvents:['hiddenchange'],   
    //要存入cookie的数据   
    getState: function(){   
      return {initColumn:this.getColumnModel().initColumn};   
    },   
    //恢复   
    applyState:function(state, config){   
      if(state){   
       //for(var k in state.initColumn){ 
       // alert("1212+="+state.initColumn[k]);
       //}
        Ext.apply(this,state);   
      } 
      //根据cookie取值设置hidden与否   
      var cm = this.getColumnModel();   
      for(var k in state.initColumn){   
        var col = cm.findColumnIndex(k); 
        cm.setHidden(col,state.initColumn[k]);   
      }
    },   
    listeners:{   
      'beforerender':function(grid,state){   
        grid.on('hiddenchange',function(cm,columnIndex,hidden){   
     
          if(!cm.initColumn){   
            cm.initColumn = {};   
          }   
          
          //监听事件,把cm的显示情况存入cookie   
       
          cm.initColumn[cm.getDataIndex(columnIndex)]=hidden;
          
          this.saveState();   
        },this);