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

时间:2016-10-10 10:25:10

标签: javascript extjs grid contextmenu extjs6

我有一个网格和网格上下文菜单我调用一个函数如下 -

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

{ 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')

但它不起作用。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

这适合我。

在网格听众中:

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());
  }
}