2012-11-15 54 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」一樣(只是隱藏「列」子菜單裏面只有一個菜單項本身)