2012-11-15 53 views
5

请帮忙!我正在使用ExtJs 4.1网格面板。Extjs Grid面板 - 在渲染后更改enableColumnHide属性

我正在寻找一种方法来更改渲染后的网格enableColumnHide属性。 我在少量更改的情况下重复使用了同一个网格,主要隐藏了一些列。

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

任何想法?

回答

1

似乎没有明显的方法可以做到这一点,但是我发现在每次更改该值时都会发现一个破解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; 
     } 
    } 
}); 

这也是posiible通过使用可隐藏的列:

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; 
     }); 
    } 
}); 

工作样品与enableColumnHidehttp://jsfiddle.net/M3Aqq/5/

工作样品与hideablehttp://jsfiddle.net/M3Aqq/9/

+0

有趣......将这工作也列上的可隐藏的财产? – danfromisrael

+0

具有可隐藏性,不需要销毁菜单。我已经更新了我的答案。 – Krzysztof

+0

真是太棒了,10倍Lolo!有什么办法可以让这些不可隐藏的列不会出现在“列”复选框列表中?我希望用户只能看到她可以隐藏在列表中的列 –

2

我也有一个之前类似的问题。根据“可隐藏”的菜单上

Extjs Grid panel - Hide a column with hideable=false

基本上我已经注册到网格标题菜单中的“beforeshow”事件和隐藏每个可隐藏列复选框项: 你可以在这里获得我的解决办法在每一列上进行推测。

你可以用“enableColumnHide”一样(只是隐藏“列”子菜单里面只有一个菜单项本身)