Extjs4.1グリッドパネルを使用しています。
グリッドから列を非表示にする方法を探しています。setHiddenを使用できますが、ユーザーは列ヘッダーのメニューから列を再度「再表示」できます。隠れるプロパティはそれをカットしないようです...
次の構成を列に使用します
hidden: true,
hideable: false
「grid.headerCt.getGridColumns()」
上記のメソッドを使用してすべてのグリッド列を取得し、 hide() および show() を使用して特定の列を表示します
これはExt js 4.1で動作しますOk。最終的に私はこれを行いました:グリッドの「afterrender」イベントで:
var header = pnl.down("headercontainer");
if(header != null && header["getMenu"] != null)
{
var menu=header.getMenu();
menu.on('beforeshow',function(sender,eOpts){
var menu=sender;
if(!menu.items.containsKey("columnItem"))
{
return;
}
var columnsSubMenuItem=menu.items.getByKey("columnItem");
var columnsCheckboxes=columnsSubMenuItem.menu.items["items"];
// More code here...
// See the pseudo code
});
}
今、私はちょうど列をループし、ifcheckbox.text == column.get_Title() && column.get_Hideable() == true thencheckbox.Show()elsecheckbox.Hide();
(疑似コードで申し訳ありません。C#からjavascriptへのコンバーターであるSharpkitを使用しているため、コードをコピーして貼り付けると、説明が難しくなります。
注: グリッドの enableColumnHide イベントでも同じことができます。
列でsetVisible(false | true)を使用します。 doc
シナリオごとにグリッドを再構成します。APIヒントへのリンク
initComponent メソッドで columns プロパティを設定し、必要な列のみを this.columns 配列に挿入できます。