showker
showker
2009-08-05 10:52

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

  • ext
  • javascript

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条回答

为你推荐