我正在尝试将浏览器上下文菜单在dojox.grid.datagrid中工作。当我右键单击现在的网格时,什么也不会发生。我尝试覆盖OncellContextMenu,OnrowContextMenu,Docontextmenu和Oncontextmenu,并在网格实例上具有空功能,但这无效。在右键单击上调用了方法OnCellContextMenu,但仍未显示上下文菜单。我认为该活动正在另一个层面停止,但我不确定该处的位置。

网格有一个链接列表,我希望用户能够右键单击链接,以便他们可以在新标签中打开它们。我知道我可以制作自定义上下文菜单来提供该功能,但是我想知道如何在将来禁用这种行为。

有帮助吗?

解决方案

我知道这可能很晚,但是我遇到了同样的问题,并通过研究源代码并询问Dojo社区聊天来找到解决方案。该解决方案涉及创建具有以下修改的自定义网格小部件:

  1. 创建一个自定义网格将使用的自定义_ focusmanager,其中唯一更新是删除Docontextmenu方法的功能,该方法执行Dojo.StopeVent。//extension to remove contextmenu dojo.stopEvent dojo.declare('myGrid.dojox.grid._FocusManager', dojox.grid._FocusManager, { doContextMenu: function() {} });

  2. 删除执行dojo.StopeVent的网格中的原始回调:默认情况下:

    //删除调用StopeVent的原始回调

    onRowContextMenu: function(e) {},
    onHeaderContextMenu: function(e) {}
    

这是我在社区聊天中给出的一个工作示例: http://jsfiddle.net/kfranqueiro/sqyxd/

其他提示

我知道这并不是您想要显示上下文菜单的解决方案,但是您是否尝试告诉用户在这些链接上ctrl-LeftClick而不是右键单击以显示上下文菜单?

您需要在DIV中创建Dijit.menu,并将其显示为无。这是一个示例,其中上下文菜单和网格包含在Dijit Contentpane中:

<div dojoType="dijit.layout.ContentPane" title="MyGrid">
    <div id="myGridContainer" style="width:100%;height:100%"></div>
    <div id="myGridContextMenu" dojoType="dijit.Menu" style="display: none;">
        <div dojoType="dijit.MenuItem" id="myGridContextMenu.delete" onClick="deleteItem">Delete</div>
    </div>
</div>

创建网格时,您还需要将菜单连接到您的网格:

var myGrid = new dojox.grid.DataGrid({ ..., onRowContextMenu: myGridcontextMenu },...);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top