我创建了两个标签面板,每个面板都有一个网格。
网格A的监听器:
Ext.getCmp('AGrid').addListener("rowcontextmenu", function menus(grid, rowIndex, e) {
if (!grid.contextMenu) {
grid.contextMenu = new Ext.menu.Menu({
autoDestroy: false,
items: [{ id: 'view', text: 'View Content'}],
currentRowIndex: rowIndex,
listeners: {
itemclick: function (item) {
switch (item.id) {
case 'view':
viewEmailClick(grid.getStore().getAt(this.currentRowIndex).data);
break;
}
}
}
});
}
this.contextMenu.currentRowIndex = rowIndex;
e.stopEvent(); // this stops the browser context menu and allows the default grid
// show the row context menu here
this.contextMenu.showAt(e.xy);
});
Grid B的监听器:
Ext.getCmp('BGrid').addListener("rowcontextmenu", function menus(grid, rowIndex, e) {
if (!grid.contextMenu) {
grid.contextMenu = new Ext.menu.Menu({
autoDestroy: false,
items: [{ id: 'view', text: 'View Task'}],
currentRowIndex: rowIndex,
listeners: {
itemclick: function (item) {
switch (item.id) {
case 'view':
viewTicketClick(grid.getStore().getAt(this.currentRowIndex).data);
break;
}
}
}
});
}
this.contextMenu.currentRowIndex = rowIndex;
e.stopEvent(); // this stops the browser context menu and allows the default grid
// show the row context menu here
this.contextMenu.showAt(e.xy);
});
当我右键单击它时,网格A工作正常,然后右键单击网格B rowcontext菜单不起作用(只显示小灰点)。
在我回到网格A并右键单击后,它会在网格A上显示两个rowcontext菜单:
如果我右键单击B网格并在转回B网格后右键单击(没有显示)网格 它显示了rowcontext菜单,其中包含Grid B上的两个列表(逆序)。
为什么会发生这种事情? 如何正确显示每个网格行上下文菜单?
答案 0 :(得分:0)
似乎您将同一个grid
变量传递给两个侦听器。
答案 1 :(得分:0)
这个问题显然是由参数网格或grid.contextmenu引起的。
我找到了答案。
问题是由以下行引起的。
items: [{ id: 'view', text: 'View Task'}]
我使用了相同的上下文菜单ID“view”。
这些名称改变后如下
items: [{ id: 'viewTask', text: 'View Task'}]
items: [{ id: 'viewContent', text: 'View Content'}]
它完美无缺。