1

copy/pasteで実装されている機能を使用していますが、正常に動作しています (つまり、いくつかのセルを選択して押すとSlickgrid、これらのセルの内容がクリップボードにコピーされます)。slick.cellcopymanager.jsCtrl+c

プログラムでアクションをトリガーしたいと思いCtrl+cます(たとえば、キーを押す代わりにボタンをクリックしてコピー/貼り付けを実行できるようにします)。のキーダウンイベントを定義する方法を知っていますCtrl+c

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 } );

次のにもかかわらず、セルのコピーはまだ機能しません:
-セルが適切に選択されている(selectedクラスがある)
-handleKeyDown適切に起動されている
-内部eargs引数がhandleKeyDown見栄えが良い(トレースしてconsole.logいて、手動との違いがわかりませんCtrl+cそしてプログラム的な試み`

Ctrl+cプログラムでセルをコピーするためにイベントをトリガーするにはどうすればよいですか?

4

1 に答える 1

4

これは、サンプルページのコンソールから実行している私にとってはうまくいきまし

// 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);
于 2012-11-07T07:13:02.977 に答える