ExtJS の Ext.grid.Panel で呼び出して、デフォルトで非表示になっている列がある場合、すべての列を表示できる関数はありますか? エンド ユーザーが非表示の列を表示する必要があるときはいつでも、各列をクリックする必要があります。以下に、フィールド ヘッダーを選択したときにカスタム メニュー オプションを追加するコードをいくつか示します。すべての列が表示されるように、この関数を実行したいと思います。
以下の例のように、「プロジェクト ID」と「ユーザー作成」はデフォルトで非表示になっています。[すべての列を選択] を選択すると、それらの列がオンになり、リスト ビューに表示されます。
listeners: {
...
},
afterrender: function() {
var menu = this.headerCt.getMenu();
menu.add([{
text: 'Select All Columns',
handler: function() {
var columnDataIndex = menu.activeHeader.dataIndex;
alert('custom item for column "'+columnDataIndex+'" was pressed');
}
}]);
}
}
});
===========================
回答 (コード付き):
すべての列を非表示にするのはばかげているため、以下のエリックのコードに基づいて私が決定したことを次に示します。
afterrender: function () {
var menu = this.headerCt.getMenu();
menu.add([{
text: 'Show All Columns',
handler: function () {
var columnDataIndex = menu.activeHeader.dataIndex;
Ext.each(grid.headerCt.getGridColumns(), function (column) {
column.show();
});
}
}]);
menu.add([{
text: 'Hide All Columns Except This',
handler: function () {
var columnDataIndex = menu.activeHeader.dataIndex;
alert(columnDataIndex);
Ext.each(grid.headerCt.getGridColumns(), function (column) {
if (column.dataIndex != columnDataIndex) {
column.hide();
}
});
}
}]);
}