Extjs 3 rowcontext уничтожить - PullRequest
       4

Extjs 3 rowcontext уничтожить

0 голосов
/ 30 января 2012

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

Прослушиватель для сетки 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 не работает (просто показывает маленькую серую точку).

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

screenshot

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

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

Ответы [ 2 ]

0 голосов
/ 31 января 2012

Эта проблема вызвана параметром grid или grid.contextmenu, очевидно.

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

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

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

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

После того, как эти имена изменились следующим образом

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

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

, он работает отлично.

0 голосов
/ 30 января 2012

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

...