2011-06-25 8 views
1

列内で並べ替えが有効になっている場合、ヘッダーをクリックするとその列が自動的に並べ替えられます。私は列のヘッダーのクリックに基づいて並べ替えを禁止したいが、ヘッダーのメニューを通して並べ替えを保持したい。つまり、列を並べ替える唯一の方法は、ヘッダーメニューを入力することです。何かご意見は?Ext JS 3 - グリッド列ヘッダーのクリック時ソートを無効にする

+0

興味深い - なぜあなたはこれが必要なのですか? – Andron

+0

最初に、カラムの選択と解除の機能を削除したかったのです。その後、私の必要性がヘッダーにカスタムメニュー項目を必要とするように変更されました。私がそれをどのようにコード化したかは以下を参照してください –

答えて

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