【问题标题】:How to enable the browser context menu in dojox.grid.DataGrid?如何在 dojox.grid.DataGrid 中启用浏览器上下文菜单?
【发布时间】:2011-01-12 19:07:09
【问题描述】:

我正在尝试让浏览器上下文菜单在 dojox.grid.DataGrid 中工作。当我现在右键单击网格时,没有任何反应。我尝试用网格实例上的空函数覆盖 onCellContextMenu、onRowContextMenu、doContextMenu 和 oncontextmenu,但这不起作用。 onCellContextMenu 方法在右键单击时被调用,但它仍然不显示上下文菜单。我认为该事件正在另一个级别停止,但我不知道该往哪里看。

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

【问题讨论】:

    标签: datagrid dojo contextmenu right-click


    【解决方案1】:

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

    1. 创建一个您的自定义网格将使用的自定义 _FocusManager,其中唯一的更新是删除默认执行 dojo.stopEvent 的 doContextMenu 方法的功能 - //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/

    【讨论】:

    • 关于该解决方案:“这是我在社区聊天中获得的一个工作示例:jsfiddle.net/kfranqueiro/SqYXd”:它确实适用于 Dojo Datagrids。不幸的是,它不适用于 EnhancedGrids(绑定保留在网格上,因此即使您没有在网格上绑定任何 Dijit 菜单,浏览器菜单仍然不会出现)。任何“增强”解决方案?... A.R.
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您需要在 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 },...);
      

      【讨论】:

      • 我无法让它工作,它仍然没有显示上下文菜单。
      • 我想我可能误解了你的问题。您希望 Firefox/chrome/IE 菜单显示上下文,就像在图像上一样?而不是你勾上的。所以把它当作页面上的另一个链接吗?
      猜你喜欢
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      相关资源
      最近更新 更多