请帮忙!我正在使用ExtJs 4.1网格面板.
我正在寻找一种在渲染后更改网格enableColumnHide属性的方法.
我在几个屏幕中重复使用相同的网格,只需稍作修改,主要是隐藏一些列.
在其中一个屏幕中,我只留下了不应该隐藏的列,因此我想完全从列标题菜单中删除该选项,但是当我到达其他屏幕时恢复它.
有任何想法吗?
解决方法
似乎没有明显的方法可以做到这一点,但我发现了一个hack – 每次更改该值时都会在headerCt和destroy header菜单上更改enableColumnHide.示例代码:
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; } } });
通过在列上使用hideable也可以实现:
var checkBox = new Ext.form.field.CheckBox({ renderTo: 'checkBox',checked) { Ext.each(grid.columns,function(c){ c.hideable = checked; }); } });
使用enableColumnHide的工作示例:http://jsfiddle.net/M3Aqq/5/
可隐藏的工作样本:http://jsfiddle.net/M3Aqq/9/