Как скопировать содержимое ячейки в сетке додзё

У меня есть веб-страница, отображающая данные с использованием сетки данных dojo. Иногда пользователям необходимо скопировать содержимое определенных ячеек для дальнейшего анализа, но, поскольку событие щелчка правой кнопкой мыши в браузере отключено в dataGrid, как лучше скопировать содержимое в буфер обмена? Заранее спасибо!

Дэйвид


person David Zhao    schedule 28.07.2009    source источник


Ответы (2)


Вам не нужно ничего необычного. Мне пришлось сделать это самому, и, просмотрев столько слишком сложных решений, я прочитал документацию и нашел самый простой способ. Сетка предназначена для этого, она просто требует от разработчика добавления меню в EnhancedGrid. Один «подводный камень» заключается в том, что конструктор сетки ДОЛЖЕН включать идентификатор div. Его нельзя вставить с помощью 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");
    }
person Dean Peterson    schedule 25.02.2011

Когда вы создаете свою сетку, вы можете установить selectable в true.

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

Или программно:

var grid = new dojox.grid.DataGrid( { selectable: true, ... });
person seth    schedule 28.07.2009
comment
это додзё 1.3 и выше, я думаю, но с додзё 1.2.2 - person David Zhao; 23.10.2009