2009-07-28 16 views
0

Ich habe eine Webseite, die Daten mit dojo datagrid anzeigt. Manchmal müssen Benutzer Inhalte aus bestimmten Zellen zur weiteren Analyse kopieren, aber da das Rechtklick-Ereignis des Browsers in DataGrid deaktiviert ist, was ist der beste Weg, den Inhalt in die Zwischenablage zu kopieren? Vielen Dank im Voraus!So kopieren Sie den Inhalt von Zellen im Dojo-Raster

David

Antwort

0

Sie brauchen nichts Besonderes. Ich musste das selbst machen und nachdem ich so viele zu komplexe Lösungen gesehen hatte, las ich die Dokumentation und fand den einfachsten Weg. Das Raster sollte dies tun, es erfordert lediglich, dass der Entwickler Menüs zu einem EnhancedGrid hinzufügt. Ein "Gotcha" ist, dass der Grid-Konstruktor eine Div-ID enthalten muss. Es kann nicht mit dijit.placeAt() eingefügt werden.

Lösung:

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

Wenn Sie Ihr Grid erstellen, können Sie selectable auf true gesetzt.

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

oder programmatisch:

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

dies Dojo 1.3 und höher, denke ich, aber mit Dojo 1.2.2 –

Verwandte Themen