Vous n'avez pas besoin de rien de fantaisie. Je devais le faire moi-même et après avoir regardé tant de solutions trop complexes, j'ai lu la documentation et trouvé le moyen le plus simple. La grille était censée faire cela, il suffit au développeur d'ajouter des menus à un EnhancedGrid. Un "gotcha" est que le constructeur de la grille DOIT inclure un ID div. Il ne peut pas être inséré en utilisant dijit.placeAt().
Solution:
function someFunction(){
var selRegionMenu = createSelectedRegionMenu(resultsGrid);
resultsGrid = new dojox.grid.EnhancedGrid({
id: "issueHistoryResultsGrid",
selectable: true,
plugins:{menus:{rowMenu:selRegionMenu, selectedRegionMenu:selRegionMenu}},
store: gridStore,
clientSort: true,
structure: gridLayout,
height: '450px'
}, "gridDiv");
}
function createSelectedRegionMenu(resultsGrid)
{
var selRegionMenu = new dijit.Menu({id:"selectedRegionMenu"});
selRegionMenu.addChild(new dijit.MenuItem({label:"Copy", iconClass: "dijitEditorIcon dijitEditorIconCopy", onClick:copySelectedContent}));
selRegionMenu.startup();
return selRegionMenu;
}
function copySelectedContent(){
var historyGrid = dijit.byId("issueHistoryResultsGrid");
//var selected = historyGrid.selected;
//var didSucceed = window.clipboardData.setData("Text",selected);
CopiedTxt = document.selection.createRange();
CopiedTxt.execCommand("Copy");
}
c'est 1.3 et dojo, je pense, mais avec dojo 1.2.2 –