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

Get Extjs grid on which context menu item is clicked

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

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

{ text: 'Preview', handler: 'PreviewGrid', scope: cnt, };

在控制器中-

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
}

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

但它不起作用。

任何帮助将不胜感激。

这对我有用。

在网格监听器中:

listeners: {

  itemcontextmenu: function (grid, record, item, index, e) {

     var contextMenu = Ext.create('Ext.menu.Menu', {
         height: 200,
         width: 250,
         items: [{
                text:'Preview', 
                handler: function () {
                    //code...
                }
         }]
     });
    e.stopEvent();
    contextMenu.showAt(e.getXY());
  }
}

示例代码: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());
        });
    }
});