Ext.Grid 如何在一加载的时候就隐藏某些列

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的方法写的,有什么问题吗?

3个回答

方法1:
[code="java"]
columns: [
{
header: "类型",
sortable: true,
dataIndex: 'type',
css:"text-align:center;"
},{
header: "属性",
sortable: true,
dataIndex: 'name',
//隐藏
hidden:true,
css:"text-align:center;"
}
[/code]

方法2:
ColumnModel.setHidden( Number colIndex, Boolean hidden ) : void

遍历一次grid的ColumnModel,对每个column都看它的hidden是true还是false

自己看看api.

看下你做的操作是否会触发close的这个事件.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问