Ext.grid 有隐藏列的功能,但是如果我想在grid一加载的时候就隐藏某些列,怎么办呢?其实说回来也就是在grid加载时就调用其本身的隐藏列的Js代码,但是我实在是找不到。请各位高手相助。
背景:领导要求保持用户浏览习惯,就是上次他保留了哪几个列,下次登录时还是显示哪几个列,要是又想多看几个列了,再多放几个出来,那下次看到的就是增加后的列。就是通常所说的用户定制界面。我想通过在隐藏,显示列的Js中,把需要的列写入cookie,然后在加载的时候将cookie中的列通过js显示出来,把不需要的列隐藏掉。不知道我表达的够不够清楚。谢谢
[b]问题补充:[/b]
谢谢您的解答。但是还是有个问题,就是我在隐藏列的时候如何记录显示的列到cookie中呢,我对ext不是很熟悉,是不是要对gidpanel进行重写呢?
Ext.override(Ext.grid.GridPanel, {
showColumnGroup : function(columnPrefix) {
this.switchColumnGroup(columnPrefix, false);
},
hideColumnGroup : function(columnPrefix) {
this.switchColumnGroup(columnPrefix, true);
},
switchColumnGroup : function(columnPrefix, state) {
var cm = this.colModel;
cm.suspendEvents();
function doFilter(column, colIndex, allColumns) {
if (column.id.substr(0,3) == columnPrefix) {
cm.setHidden(colIndex, state);
}
}
Ext.each(cm.config, doFilter, this);
cm.resumeEvents();
this.getView().refresh(true);
}
});
这是官方上讨论的有关隐藏显示列的一段js,看不太懂。
[b]问题补充:[/b]
非常感谢。我已经有思路。还有一个问题,就是grid的close事件。我这样写
grid.on("close",CloseWriteCookie,grid);
function CloseWriteCookie()
{
//写cookie
alert("您确定关闭窗口吗?");
}
不起作用,我是照着afteredit的方法写的,有什么问题吗?