2010-02-03 85 views
2

我試圖讓瀏覽器上下文菜單在dojox.grid.DataGrid中工作。當我現在右擊網格時,沒有任何反應。我嘗試在GridContextMenu,onRowContextMenu,doContextMenu和oncontextmenu上覆蓋網格實例上的空函數,但沒有奏效。 onCellContextMenu方法在右鍵單擊時調用,但仍不顯示上下文菜單。我認爲這個事件正在另一個層面上停止,但我不確定在哪裏尋找。如何啓用dojox.grid.DataGrid中的瀏覽器上下文菜單?

網格有一個鏈接列表,我希望用戶能夠右鍵單擊鏈接,以便他們可以在新選項卡中打開它們。我知道我可以創建自定義上下文菜單來提供該功能,但我想知道如何在將來禁用此行爲。

回答

4

我知道,這可能有點遲,但我遇到了同樣的問題,並通過研究源代碼並詢問道場社區聊天問題找到了解決辦法。該解決方案包括創建具有以下修改自定義網格小部件:

  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/

+1

關於這個解決方案:「這是一個我在社區聊天中得到的實例:http://jsfiddle.net/kfranqueiro/SqYXd/」:它的確與Dojo Datagrids很好地協作。不幸的是,它不適用於增強型網格(綁定保留在網格上,所以即使你沒有綁定網格上的任何Dijit菜單,瀏覽器菜單仍然不會出現)。任何「增強」解決方案?... A.R. – 2011-11-08 22:33:24

0

我知道這不完全是您想要顯示上下文菜單的解決方案,但您是否嘗試告訴您的用戶Ctrl-leftClick這些鏈接,而不是右鍵單擊以顯示上下文菜單?

+0

是啊,這就是我們現在的情況,但它不是一個很好的解決方案。 – Alex 2010-02-06 15:51:15

0

您需要在div中創建dijit.menu並將其顯示設置爲none。這裏就是上下文菜單和網格包含在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 },...); 
+0

我無法得到這個工作,它仍然不顯示上下文菜單。 – Alex 2010-02-24 19:09:35

+0

我想我可能誤解了你的問題。你想讓Firefox/chrome/IE菜單顯示上下文,就像在圖像上一樣?而不是你插入的一個。因此,對待它就像在頁面上的另一個鏈接? – 2010-03-02 18:29:44

相關問題