我有一個使用dojo datagrid顯示數據的網頁。有時,用戶需要複製某些單元格中的內容以供進一步分析,但由於瀏覽器的右鍵單擊事件在dataGrid中被禁用,將內容複製到剪貼板的最佳方法是什麼? 在此先感謝!如何複製dojo grid中的單元格內容
大衛
我有一個使用dojo datagrid顯示數據的網頁。有時,用戶需要複製某些單元格中的內容以供進一步分析,但由於瀏覽器的右鍵單擊事件在dataGrid中被禁用,將內容複製到剪貼板的最佳方法是什麼? 在此先感謝!如何複製dojo grid中的單元格內容
大衛
你不需要任何幻想。我必須親自去做這件事,看過這麼複雜的解決方案後,我閱讀了文檔並找到了最簡單的方法。網格是爲了做到這一點,它只需要開發人員將菜單添加到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");
}
當您創建網格,你可以設置selectable
爲true。
<div dojotype="dojox.grid.DataGrid" selectable="true" ....>
或者編程:
var grid = new dojox.grid.DataGrid({ selectable: true, ... });
這是道場1.3及以上,我想,但使用Dojo 1.2.2 – 2009-10-23 15:31:24