2012-06-15 41 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