2012-06-15 64 views

回答

0

你應該可以做到。

在Ext.grid.header.Container對象的'menucreate'事件上添加一個監聽器。該代表將向您傳遞菜單的引用,然後您可以操作菜單。

例如

var gridHeader = gridPanelInstance.getView().headerCt; //return the Header Container 

gridHeader.on('menucreate', function(gridHeaderContainer, menu, option) { 

    // do whatever you want with the menu here... eg: add/remove/ edit menu item 
}); 
2

這個問題似乎有點模糊,我相信附有影像是扔我。

自定義網格標題菜單(Answer)..

。請參閱答案。

我的最終產品我甚至定製我的回答進一步:

initComponent: function() { 
    this.callParent(arguments); 

    this.headerCt.on('headerclick', function (header, column, event, html) { 
     if (column.xtype == 'rownumberer') { 
      return false; 
     }; 

     header.showMenuBy(column.el.dom, column); 
    }, this); 

    this.headerCt.on('menucreate', function (header, column, event, html) { 
     var menu = header.getMenu(); 

     this.createHeaderMenu(menu); 
    }, this); 
}, 

createHeaderMenu: function (menu) { 
    menu.removeAll(); 

    // simulate header menu to be plain (menu is already created at this point) 
    menu.addCls(Ext.baseCSSPrefix + 'menu-plain'); 
    menu.name = 'report_data_header_menu'; 

    menu.add({ 
     name: 'sort_asc', 
     text: 'Sort Ascending' 
    }, { 
     name: 'sort_desc', 
     text: 'Sort Descending' 
    }, { 
     name: 'remove_column', 
     text: 'Remove' 
    }); 
} 
+0

,請務必讓「this.callParent(參數)」之前訪問「this.headerCt」。 我有問題,因爲我試圖訪問「this.headerCt」之前調用「this.callParent(參數)」和「this.headerCt」未定義。你的例子幫助我解決了這個問題。謝謝。 – Aebsubis