我有一个使用dojo datagrid显示数据的网页。有时,用户需要复制某些单元格中的内容以供进一步分析,但由于在dataGrid中禁用了浏览器的右键单击事件,将内容复制到剪贴板的最佳方法是什么? 提前谢谢!
大卫
答案 0 :(得分:7)
创建网格时,可以将selectable
设置为true。
<div dojotype="dojox.grid.DataGrid" selectable="true" ....>
或以编程方式:
var grid = new dojox.grid.DataGrid( { selectable: true, ... });
答案 1 :(得分: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");
}