获取单击了上下文菜单项的Extjs网格

Mic*_* DN 2 javascript grid extjs contextmenu extjs6

我有一个网格,并且在网格上下文菜单上,我正在调用一个函数,如下所示:

在网格上下文菜单中,我添加了以下项目

{ text: 'Preview', handler: 'PreviewGrid', scope: cnt, };
Run Code Online (Sandbox Code Playgroud)

在控制器中

previewGrid: function (contextMenuItem) {    
        // Here I am getting the item i.e. contextmenu item.
        // But I want here is grid on which there was right click
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用 item.ownerCt.up('grid')

但它不起作用。

任何帮助将不胜感激。

mad*_*son 5

示例代码:https : //fiddle.sencha.com/#fiddle/1i9o

Ext.application({
    name: 'Fiddle',

    launch: function() {
        var grid = Ext.create('Ext.grid.Panel', {
            renderTo: Ext.getBody(),
            width: 400,
            height: 500,
            title: 'itemcontextmenu',

            store: {
                fields: ['name', 'email', 'phone'],
                data: [{
                    'name': 'Lisa',
                    "email": "lisa@simpsons.com",
                    "phone": "555-111-1224"
                }, {
                    'name': 'Bart',
                    "email": "bart@simpsons.com",
                    "phone": "555-222-1234"
                }, {
                    'name': 'Homer',
                    "email": "homer@simpsons.com",
                    "phone": "555-222-1244"
                }, {
                    'name': 'Marge',
                    "email": "marge@simpsons.com",
                    "phone": ""
                }]
            },
            columns: [{
                text: 'Name',
                dataIndex: 'name',
                flex: 1
            }]
        });

        var contextMenu = Ext.create('Ext.menu.Menu', {
            width: 200,
            items: [{
                text: 'Preview',
                handler: function() {
                    var record = grid ? grid.getSelection()[0] : null;
                    if (!record) {
                        return;
                    }

                    alert(record.get('name'));
                }
            }]
        });

        grid.on("itemcontextmenu", function(grid, record, item, index, e) {
            e.stopEvent();
            contextMenu.showAt(e.getXY());
        });
    }
});
Run Code Online (Sandbox Code Playgroud)