2009-07-28 7 views
0

J'ai une page Web affichant des données en utilisant doagrario-data. Parfois, les utilisateurs doivent copier le contenu de certaines cellules pour une analyse plus approfondie, mais comme l'événement de clic droit du navigateur est désactivé dans dataGrid, quelle est la meilleure façon de copier le contenu dans le presse-papiers? Merci d'avance!Comment copier le contenu d'une cellule dans la grille de dojo

David

Répondre

0

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"); 
    } 
7

Lorsque vous créez votre grille, vous pouvez définir selectable true.

<div dojotype="dojox.grid.DataGrid" selectable="true" ....> 

Ou programatically:

var grid = new dojox.grid.DataGrid({ selectable: true, ... }); 
+0

c'est 1.3 et dojo, je pense, mais avec dojo 1.2.2 –

Questions connexes