I am using the copy/paste feature implemented in Slickgrid‘s slick.cellcopymanager.js which is working fine (i.e. if you select some cells and press Ctrl+c then the content of these cells will be copied into your clipboard).
I would like to trigger the Ctrl+c action programatically (for instance to allow doing copy/paste by clicking buttons instead of pressing keys). I know how to define the keydown event for Ctrl+c:
var e = jQuery.Event("keydown");
e.which = 67;
e.ctrlKey = true;
however I just can’t find out which object to trigger that event with and how so as to simulate the manual Ctrl+c. First I tried a simple trigger of the event which didn’t work:
–div_dom_from_selected_cell.trigger(e); // nothing happens
–grid_dom_wrapper.trigger(e); // nothing happens
–$('body').trigger(e); // nothing happens
–my_grid.trigger(e); // trigger is not a function
Then I extended slick.cellcopymanager.js so as to make the handleKeyDown function available externally:
$.extend(this, {
"init": init,
"destroy": destroy,
"clearCopySelection": clearCopySelection,
"handleKeyDown": handleKeyDown, // ADDED THIS LINE
"onCopyCells": new Slick.Event(),
"onCopyCancelled": new Slick.Event(),
"onPasteCells": new Slick.Event()
});
And tried to use it:
var copyManager = new Slick.CellCopyManager();
copyManager.init(my_grid);
copyManager.handleKeyDown(e, { cell: cell, row: row, grid: my_grid } );
The copying of the cell still doesn’t work despite:
-me having a cell properly selected (it has the selected class)
–handleKeyDown being fired properly
–e and args arguments inside handleKeyDown looking good (I’m tracing with console.log and can’t see any difference between manual Ctrl+c and programatic attempt`
How can I trigger the Ctrl+c event so as to copy a cell programatically?
This worked for me running from the console on the example page.
And then paste: