【问题标题】:extjs6 - grid contextmenu, pass through row selectionextjs6 - 网格上下文菜单,通过行选择
【发布时间】:2018-11-14 04:43:22
【问题描述】:

在我的 extjs6 项目中,我有一个网格,我想添加功能以右键单击网格,从菜单栏中选择项目并启动弹出窗口,但将行选择传递给单击方法。

到目前为止,我的右键菜单栏正常工作,但是当单击菜单项时,我想通过网格中的选定行。有人可以帮我将网格行选择传递给控制器​​方法吗?

我的看法

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'
            },

控制器

    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;
},

【问题讨论】:

    标签: extjs contextmenu


    【解决方案1】:

    要解决问题,请将块 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.
    

    【讨论】:

    • 如果我更改代码以匹配您的代码,如何在控制器方法“onDownloadTopdayRecapContextButton2”中捕获 currentRecord
    • OK,按照以下步骤操作: 1. 在 showContextMenu2 上设置 rec 参数 no viewModel; 2. 然后在 onDownloadTopdayRecapContextButton2 方法上,您将 viewModel 属性获取到当前选定的记录。
    • 那是我不明白的部分。我该怎么做.... 2. 然后在 onDownloadTopdayRecapContextButton2 方法上,您将 viewModel 属性设置为当前选定的记录
    • 我想我明白了! onDownloadTopdayRecapContextButton2: function (item, e) { debugger; var menu = item.up('menu'); var rec = menu.currentRecord;
    • 恭喜! @solarissf
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多