2012-11-15 5 views
5

助けてください!私はExtJs 4.1グリッドパネルを使用しています。Extjsグリッドパネル - レンダリング後にenableColumnHideプロパティを変更します

レンダリング後にグリッドenableColumnHideプロパティを変更する方法を探しています。 マイナーな変更を加えていくつかの画面で同じグリッドを再利用します。主にいくつかの列が隠れています。

これらの画面の1つでは、非表示にしてはいけない列しか残されていないので、列ヘッダーメニューからオプションを削除したいが、他の画面の1つに戻ると復元する。

アイデア?

答えて

1

明白な方法はありませんが、headerCtにハック変更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使用してposiibleです:enableColumnHide

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

ワーキングサンプル:hideablehttp://jsfiddle.net/M3Aqq/5/

ワーキングサンプル:http://jsfiddle.net/M3Aqq/9/

+0

てしまうが同じことを行うことができますか? – danfromisrael

+0

隠すことができますメニューを破壊する必要はありません。私は私の答えを更新しました。 – Krzysztof

+0

これは素晴らしい、10倍のLoloです!隠すことができない列が「列」チェックボックスリストに表示されないように、これには何らかの方法がありますか?私は、ユーザーが実際にそのリストに隠れることができる列だけを表示するようにしたい –

2

私も持っていました以前同様の問題。 あなたは私の問題を回避するために、ここで確認できます。

Extjs Grid panel - Hide a column with hideable=false

を基本的に私は、グリッドヘッダメニューの「beforeshow」イベントに登録し、「hideable」に従って、メニュー上の各hideable列のチェックボックス項目を非表示にしました各列のプロパティ。

あなたはこの作品には、列のHideableプロパティのためにも...面白い「enableColumnHide」(ちょうどのみのメニュー項目そのものである「列」サブメニューを非表示)

関連する問題