读书人

extjs 用cookie保留用户习惯隐藏列 刷

发布时间: 2013-08-04 18:26:16 作者: rapoo

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的操作

读书人网 >JavaScript

热点推荐