首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

extjs 用cookie保留用户习惯隐藏列 刷新之后列显示不正常

2013-08-04 
extjs 用cookie保存用户习惯隐藏列 刷新之后列显示不正常如题,这是在网上查找到的代码,第一次登陆后,隐藏

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);   


        //托管事件   
        grid.relayEvents(grid.getColumnModel(),['hiddenchange']);   
      }   
    } Cookie Ext?JS 隐藏列
[解决办法]
哈哈  我刚刚也遇到这类似的问题  

应该是extjs的渲染机制的问题  我的解决办法就是settimeout  延迟 进行操作

EXTJS 的控件大多都会延迟进行渲染 (默认貌似是100MS)

或者是你能够确定页面渲染的步骤 然后在相应的地方进行操作
[解决办法]
在成功读取cookie后再执行DOM的操作

热点排行