showker 2009-08-05 10:52
浏览 479
已采纳

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

  • iteye_10013 2009-08-05 10:58
    关注

    方法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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题