Я создал две панели вкладок, и каждая панель имеет сетку.
Слушатель для сетки 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);
});
Слушатель для сетки 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 работает нормально, а затем щелкает правой кнопкой мыши по строке Grid B, контекстное меню не работает (просто показывает маленькую серую точку).
После того, как я вернусь к сетке A и щелкну правой кнопкой мыши, в сетке A появятся два контекстных меню строки:
Если я щелкну правой кнопкой мыши по сетке B и щелкну правой кнопкой мыши по сетке A (ничего не отображается) после возврата к сетке B, появится контекстное меню строки, которое содержит два списка (обратный порядок) в сетке B.
Почему такое происходит?
Как правильно отобразить контекстное меню каждой строки сетки?