Extjs Grid面板 - 渲染后更改enableColumnHide属性

Nir*_*lum 5 javascript grid extjs extjs4.1

请帮忙!我正在使用ExtJs 4.1网格面板.

我正在寻找一种在渲染后更改网格enableColumnHide属性的方法.我在几个屏幕中重复使用相同的网格,只需稍作修改,主要是隐藏一些列.

在其中一个屏幕中,我只留下了不应该隐藏的列,因此我想完全从列标题菜单中删除该选项,但是当我到达其他屏幕时恢复它.

有任何想法吗?

Krz*_*tof 1

似乎没有明显的方法可以做到这一点,但我发现了一个 hack -每次更改该值时都会更改并销毁标题菜单enableColumnHideheaderCt示例代码:

var checkbox = new Ext.form.field.Checkbox({
    renderTo: 'checkbox',
    boxLabel: 'enableColumnHide',
    checked: true,
    handler: function(sender, checked) {
        var h = grid.headerCt;
        h.enableColumnHide = checked;
        if (h.menu) {
            h.menu.destroy();
            h.menu = null;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

也可以通过在列上使用 hideable 来实现:

var checkbox = new Ext.form.field.Checkbox({
    renderTo: 'checkbox',
    boxLabel: 'enableColumnHide',
    checked: true,
    handler: function(sender, checked) {
        Ext.each(grid.columns, function(c){
            c.hideable = checked;
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

工作示例enableColumnHide: http: //jsfiddle.net/M3Aqq/5/

工作示例hideable: http: //jsfiddle.net/M3Aqq/9/