如何在dojo网格中复制单元格内容

时间:2009-07-28 18:05:37

标签: datagrid dojo copy grid

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

大卫

2 个答案:

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