2012-01-30 2 views
0

Я создал две панели вкладок, и каждая панель имеет сетку.Extjs 3 rowcontext destroy

Слушатель для сетки 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); 
    }); 

Когда я правой кнопкой мыши на ней сетке работает нормально, а затем щелкните правой кнопкой мыши на меню rowcontext Сетка B не (просто показывает маленькую серо-точку).

После ворочу к сетке А и правой кнопкой мыши, он показывает два rowcontext меню на Энергосистемы A:

screenshot

Если я правой кнопкой мыши на B сетки и сетка правой кнопкой мыши (ничего не показывает) после того, как вернитесь к B-сетке это показывает строку контекстного меню, которое содержит два списка (обратный порядок) на сетке B.

Почему такие вещи случаются?
Как я могу правильно показать каждое контекстное меню строки сетки?

ответ

0

Эта проблема вызвана сеткой параметров или grid.contextmenu.

Я нашел ответ.

Проблема вызвана следующей строкой.

items: [{ id: 'view', text: 'View Task'}] 

Я использовал такое же контекстное меню id 'view'.

После тех измененное имя, например, следующие

items: [{ id: 'viewTask', text: 'View Task'}] 

items: [{ id: 'viewContent', text: 'View Content'}] 

это работает прекрасно.

0

Кажется, вы передаете одинаковые grid переменным для обоих слушателей.

+0

Параметр используется при встроенной функции. Это не проблема – ShootingStar