extjs6 - контекстное меню сетки, проход через выбор строки - PullRequest
0 голосов
/ 13 ноября 2018

В моем проекте extjs6 у меня есть сетка, я хочу добавить функциональность, чтобы щелкнуть правой кнопкой мыши на сетке, выбрать элемент в строке меню и открыть всплывающее окно, но передать выбор строки методу click.

Пока у меня работает строка меню, вызываемая правой кнопкой мыши, но при нажатии на пункт меню я хочу пройти через выбранную строку из сетки. Может кто-нибудь помочь мне передать выбор строки сетки методу контроллера?

мой взгляд

Ext.define('Example.ContextMenu', {
xtype: 'contextMenuMarketDrilldownAccount',
extend: 'Ext.menu.Menu',
items: [{
    text: 'Market Drilldown by Account',
    listeners: {
        click: 'onDownloadTopdayRecapContextButton2'
    }
}]
});

             //removing a lot of code to make it readable here
            xtype: 'grid',
            title: 'Details',
            itemId: 'detailsGridID',
            bind: {
                store: '{myDetailsStore}'
            },
            flex: 3,
            margin: '5px 0px 0px 0px',
            ui: 'featuredpanel-framed',
            cls: 'custom-grid',
            height: '100%',
            collapsible: true,
            collapseDirection: 'left',
            listeners: {
                itemcontextmenu: 'showContextMenu2'
            },

CONTROLLER

    showContextMenu2: function (view, rec, node, index, e) {
    e.stopEvent();
    debugger;
    //var selectedMarket = rec.get('BBSymbol');
    this.getContextMenu2().show().setPagePosition(e.getXY());
    return false;
},

getContextMenu2: function () {
    if (!this.contextMenu) {
        this.contextMenu = this.getView().add({ xtype: 'contextMenuMarketDrilldownAccount' });
    }
    return this.contextMenu;
},

1 Ответ

0 голосов
/ 13 ноября 2018

Чтобы решить эту проблему, измените блок this.getContextMenu2 () на this.getContextMenu2 (rec)

showContextMenu2: function (view, rec, node, index, e) {
    e.stopEvent();
    debugger;
    //var selectedMarket = rec.get('BBSymbol');
    this.getContextMenu2(rec).show().setPagePosition(e.getXY());
    return false;
},

getContextMenu2: function (rec) {
    if (!this.contextMenu) {
        this.contextMenu = this.getView().add({ 
            xtype: 'contextMenuMarketDrilldownAccount',
            currentRecord: rec 
        });
    }
    return this.contextMenu;
}

//Then you catch a currentRecord on a contextMenuMarketDrilldownAccount component.
...