我花了最后3个小时尝试在Grid中创建一个菜单(参见img:Menu inside a grid)。但是对于我的生活,我无法让handlers
在菜单中工作。
编辑(澄清):我希望在每个记录行的网格内有更多的动作图标空间。因此,为了创建额外的空间,我希望在每个网格行中都有一个菜单onClick
(参见图片),这样我就可以在下拉菜单中添加无限的操作图标。
我创建了这样的菜单(我认为这不对,但我不知道怎么做):
ux.RGridPanel = Ext.extend(Ext.grid.GridPanel, {
newMenu: new Ext.menu.Menu({
id: 'mainMenu',
style: {
overflow: 'visible' // For the Combo popup
},
items: [
{
text: 'I like Ext',
checked: true // when checked has a boolean value, it is assumed to be a CheckItem
},
{
iconCls: 'sitemap_16',
text: 'Test 2',
tooltip: '',
handler: function(a,b){
console.log(this.ownerCt); //All this stuff is not working
console.log(a);
console.log( this.parent);
this.parent.showSelectDialog //This is what is causing me issues, this won't work.
}
},
[...]
]
});
我正在尝试在RGridPanel
内调用处理程序:
showSelectDialog: function(grid, rowIndex, colIndex) {}
我想在RGridPanel
中使用漂亮的方法,所以我不需要传递参数。任何人都可以指出我正确的方向来解决这个问题吗?!
EDIT :::
在GridPanel
:
loadMenu: function(){
return new Ext.menu.Menu({
scope:this,
id: 'mainMenu',
style: {
overflow: 'visible' // For the Combo popup
},
items: [
{
iconCls: 'sitemap_16',
text: 'Test 2',
handler:this.showSelectImportFileDialog, //this works, but it does not pass the required params
并且
initComponent: function() {
this.newMenu = this.loadMenu();
在cog
图标上:
handler: function (view, record, el, i, e) {
view.newMenu.showAt(e.getXY());
},
我现在可以拨打showSelectDialog
,但默认参数((grid, rowIndex, colIndex)
无效。因为我从菜单中调用了showSelectDialog
。
答案 0 :(得分:0)
当您显示菜单时,您可以提供如下信息:
handler: function(grid, rowIndex, colIndex, item, e) {
grid.newMenu.cfg = {
grid: grid,
rowIndex: rowIndex,
colIndex: colIndex,
whatever: null
};
grid.newMenu.showAt(e.getXY());
}
然后在菜单处理程序中使用它:
handler: function(){
var menu = this.ownerCt;
var cfg = menu.cfg;
console.log(cfg);
}