Extjs 3 rowcontext destroy

时间:2012-01-30 07:47:02

标签: extjs extjs3

我创建了两个标签面板,每个面板都有一个网格。

网格A的监听器:

Ext.getCmp('AGrid').addListener("rowcontextmenu", function menus(grid, rowIndex, e) {
        if (!grid.contextMenu) {
            grid.contextMenu = new Ext.menu.Menu({
                autoDestroy: false,
                items: [{ id: 'view', text: 'View Content'}],
                currentRowIndex: rowIndex,
                listeners: {
                    itemclick: function (item) {
                        switch (item.id) {
                            case 'view':
                                viewEmailClick(grid.getStore().getAt(this.currentRowIndex).data);
                                break;
                        }
                    }
                }
            });
        }
        this.contextMenu.currentRowIndex = rowIndex;
        e.stopEvent();  // this stops the browser context menu and allows the default grid 
        // show the row context menu here
        this.contextMenu.showAt(e.xy);
    });

Grid B的监听器:

Ext.getCmp('BGrid').addListener("rowcontextmenu", function menus(grid, rowIndex, e) {    
        if (!grid.contextMenu) {
            grid.contextMenu = new Ext.menu.Menu({
                autoDestroy: false,
                items: [{ id: 'view', text: 'View Task'}],
                currentRowIndex: rowIndex,
                listeners: {
                    itemclick: function (item) {
                        switch (item.id) {
                            case 'view':
                                viewTicketClick(grid.getStore().getAt(this.currentRowIndex).data);
                                break;
                        }
                    }
                }
            });
        }
        this.contextMenu.currentRowIndex = rowIndex;
        e.stopEvent();  // this stops the browser context menu and allows the default grid 
        // show the row context menu here
        this.contextMenu.showAt(e.xy);
    });

当我右键单击它时,网格A工作正常,然后右键单击网格B rowcontext菜单不起作用(只显示小灰点)。

在我回到网格A并右键单击后,它会在网格A上显示两个rowcontext菜单:

screenshot

如果我右键单击B网格并在转回B网格后右键单击(没有显示)网格 它显示了rowcontext菜单,其中包含Grid B上的两个列表(逆序)。

为什么会发生这种事情? 如何正确显示每个网格行上下文菜单?

2 个答案:

答案 0 :(得分:0)

似乎您将同一个grid变量传递给两个侦听器。

答案 1 :(得分:0)

这个问题显然是由参数网格或grid.contextmenu引起的。

我找到了答案。

问题是由以下行引起的。

items: [{ id: 'view', text: 'View Task'}]

我使用了相同的上下文菜单ID“view”。

这些名称改变后如下

items: [{ id: 'viewTask', text: 'View Task'}]

items: [{ id: 'viewContent', text: 'View Content'}]

它完美无缺。