我如何为extjs网格创建上下文菜单

edt*_*ech 20 grid extjs contextmenu

我可以为树创建上下文菜单并附加到'contextmenu'事件.码:

contextMenu = new Ext.menu.Menu({
  items: [{
    text: 'Edit',
    iconCls: 'edit',
    handler: edit
  },...]
})

Ext.getCmp('tree-panel').on('contextmenu', function(node) {
  contextMenu.show(node.ui.getAnchor());
})
Run Code Online (Sandbox Code Playgroud)

但是我如何为网格元素创建上下文菜单?

小智 26

首先定义上下文菜单

mnuContext = new Ext.menu.Menu({
    items: [{
        id: 'do-something',
        text: 'Do something'
    }],
    listeners: {
        itemclick: function(item) {
            switch (item.id) {
                case 'do-something':
                    break;
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

然后为所需事件创建一个侦听器.记住停止事件的默认行为非常重要,这样您就可以用自己的行为替换它.如果不调用event.stopEvent()方法来停止事件冒泡,则无论您执行什么操作,都会显示浏览器的默认上下文菜单.

rowcontextmenu: function(grid, index, event){
     event.stopEvent();
     mnuContext.showAt(event.xy);
}
Run Code Online (Sandbox Code Playgroud)


Bri*_*kau 7

嗯,这取决于你想做的事,你可以处理以下哪些GridPanel相同的方式事件的例子:文本菜单,cellcontextmenu,containercontextmenu,groupcontextmenu,headercontextmenu,rowbodycontextmenurowcontextmenu.

  • @Brian你的答案是不完整的,因为它没有提到event.stopEvent.既然你的答案是公认的答案,但在我看来我的需求不完整,而其他喜欢我的人可能会通过Google找到这个答案,我认为让你的答案在你的下面显得很突出,评分为6到3,而不是我很遗憾只丢失2分的代表会让你觉得有必要亲自抨击我,我花了我自己的代表继续让他们成为更好的资源. (2认同)