/ / Как да активирате контекстното меню на браузъра в dojox.grid.DataGrid? - datagrid, dojo, contextmenu, щракнете с десния бутон

Как да активираме контекстното меню на браузъра в dojox.grid.DataGrid? - datagrid, доджо, contextmenu, кликнете с десния бутон

Опитвам се да използвам контекстното меню на браузъраработа вътре в dojox.grid.DataGrid. Когато щракнете с десния бутон върху мрежата, нищо не се случва. Опитах да преодолея onCellContextMenu, onRowContextMenu, doContextMenu, и oncontextmenu с празни функции на екземпляра на решетката, но това не работи. Мисля, че събитието се спира на друго ниво, но не съм сигурен къде да търся.

Мрежата има списък с връзки, а аз искам потребителите даможете да щракнете с десния бутон върху връзките, за да могат да ги отворят в нов раздел. Знам, че мога да направя потребителско контекстно меню, за да осигуря тази функционалност, но бих искал да знам как да го деактивирам в бъдеще.

Отговори:

4 за отговор № 1

Знам, че това може да е малко късно, но аз бяхв същия точен проблем и намери резолюция, като изучава изходния код и пита около чат за общността на доджо. Решението включва създаване на персонализирана Grid джаджа, която има следните модификации:

  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/


0 за отговор № 2

Знам, че не е точно решението, което искате за показване на контекстното меню, но опитали ли сте да кажете на потребителите си да натискат Ctrl-leftClick на тези връзки, а щракнете с десния бутон, за да покажете контекстното меню?


0 за отговор № 3

Трябва да създадете dijit.menu в div и да настроите дисплея му на 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 },...);