2009-07-28 38 views
0

我有一个使用dojo datagrid显示数据的网页。有时,用户需要复制某些单元格中的内容以供进一步分析,但由于浏览器的右键单击事件在dataGrid中被禁用,将内容复制到剪贴板的最佳方法是什么? 在此先感谢!如何复制dojo grid中的单元格内容

大卫

回答

0

你不需要任何幻想。我必须亲自去做这件事,看过这么复杂的解决方案后,我阅读了文档并找到了最简单的方法。网格是为了做到这一点,它只需要开发人员将菜单添加到EnhancedGrid。一个“难题”是网格构造函数必须包含一个div ID。它不能使用dijit.placeAt()插入。

解决方案:

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

当您创建网格,你可以设置selectable为true。

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

或者编程:

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

这是道场1.3及以上,我想,但使用Dojo 1.2.2 – 2009-10-23 15:31:24

相关问题