【问题标题】:Trigger cell copy (Ctrl+c) programatically with SlickGrid使用 SlickGrid 以编程方式触发单元格复制 (Ctrl+c)
【发布时间】:2012-07-30 09:24:12
【问题描述】:

我正在使用在Slickgridslick.cellcopymanager.js 中实现的copy/paste 功能,该功能运行良好(即,如果您选择一些单元格并按Ctrl+c,那么这些单元格的内容将被复制到您的剪贴板中) .

我想以编程方式触发Ctrl+c 操作(例如,允许通过单击按钮而不是按键来进行复制/粘贴)。我知道如何为Ctrl+c 定义keydown 事件:

var e = jQuery.Event("keydown");        
e.which = 67;
e.ctrlKey = true;

但是我无法找出触发该事件的对象以及如何模拟手册Ctrl+c。首先,我尝试了一个无效的事件的简单触发器:

-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

然后我扩展slick.cellcopymanager.js,使handleKeyDown函数对外可用:

$.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()
});

并尝试使用它:

var copyManager = new Slick.CellCopyManager();
copyManager.init(my_grid);
copyManager.handleKeyDown(e, { cell: cell, row: row, grid: my_grid } );

尽管如此,单元格的复制仍然无法正常工作:
-me 正确选择了一个单元格(它有 selected 类)
-handleKeyDown 被正确解雇
-eargs 内部的参数 handleKeyDown 看起来不错(我正在使用 console.log 进行跟踪,并且看不出手动 Ctrl+c 和编程尝试之间有任何区别`

如何触发Ctrl+c 事件以编程方式复制单元格?

【问题讨论】:

    标签: javascript triggers copy slickgrid


    【解决方案1】:

    这对我从 example page 上的控制台运行很有用。

    // Copy from row 2, column 5
    var row = 2, col = 5;
    grid.getSelectionModel().setSelectedRanges([new Slick.Range(row,col)]);
    var e = jQuery.Event("keydown");        
    e.which = 67;
    e.ctrlKey = true;
    grid.onKeyDown.notify(null, e);
    

    然后粘贴:

    // Past to row 3, column 4
    var row = 3, col = 4;
    grid.getSelectionModel().setSelectedRanges([new Slick.Range(row,col)]);
    var e = jQuery.Event("keydown");        
    e.which = 86;
    e.ctrlKey = true;
    grid.onKeyDown.notify(null, e);
    

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 2015-01-15
      相关资源
      最近更新 更多