列内で並べ替えが有効になっている場合、ヘッダーをクリックするとその列が自動的に並べ替えられます。私は列のヘッダーのクリックに基づいて並べ替えを禁止したいが、ヘッダーのメニューを通して並べ替えを保持したい。つまり、列を並べ替える唯一の方法は、ヘッダーメニューを入力することです。何かご意見は?Ext JS 3 - グリッド列ヘッダーのクリック時ソートを無効にする
1
A
答えて
1
var contextMenu = new Ext.menu.Menu({
items: [{
id: 'sort-high-to-low',
cls: 'xg-hmenu-sort-asc',
text: 'Sort Ascending within Group'
},{
id: 'sort-low-to-high',
cls: 'xg-hmenu-sort-desc',
text: 'Sort Descending within Group'
},'-',{
id: 'sort-high-to-low-all',
cls: 'xg-hmenu-sort-asc',
text: 'Sort All Ascending'
},{
id: 'sort-low-to-high-all',
cls: 'xg-hmenu-sort-desc',
text: 'Sort All Descending'
},'-', {
id: 'heatmap',
cls: 'xg-hmenu-heatmap',
text: 'Open in Heatmap'
}],
listeners: {
scope: this,
itemclick: function(item) {
switch (item.id) {
case 'sort-high-to-low':
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'ASC');
this.hide();
break;
case 'sort-low-to-high':
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'DESC');
this.hide();
break;
case 'sort-high-to-low-all':
Ext.getCmp('backtestGrid').getStore().clearGrouping();
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'ASC');
this.hide();
break;
case 'sort-low-to-high-all':
Ext.getCmp('backtestGrid').getStore().clearGrouping();
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'DESC');
this.hide();
break;
case 'heatmap':
heatmapCallback(contextMenu.headerName, contextMenu.columnId);
this.hide();
break;
}
}
}});
0
次の投稿に基づいて独自のコンテキストメニューを構築しました。
-1
関連する問題
興味深い - なぜあなたはこれが必要なのですか? – Andron
最初に、カラムの選択と解除の機能を削除したかったのです。その後、私の必要性がヘッダーにカスタムメニュー項目を必要とするように変更されました。私がそれをどのようにコード化したかは以下を参照してください –