作成日: 2014/10/27 最終更新日: 2014/10/27
文書種別
使用方法
詳細
Excelからデータをコピー&ペーストするための直接的な機能は用意されておりませんが、JavaScriptでC1GridViewの[keydown]イベントを捕捉し、クリップボードのデータをコピー&ペーストすることが可能です。
JavaScriptを使用した場合のコピー&ペーストのサンプルコードは下記のようになります。
◎サンプルコード (JavaScript)
※1 このサンプルは複数行選択(ClientSelectionMode="MultiRow")で指定した範囲に対してコピー&ペーストが可能です。
※2 DBのテーブルとバインドしたグリッドにおいて、DBのテーブルが更新される訳ではありません。
JavaScriptを使用した場合のコピー&ペーストのサンプルコードは下記のようになります。
◎サンプルコード (JavaScript)
$("#C1GridView1").keydown(function (e) {
// ペースト操作を処理します(ctrl + v)
if (e.ctrlKey && (e.keyCode == 86)) {
// クリップボードテキストを取得します
var clipText = window.clipboardData.getData('Text');
// 行に分割します
clipRows = clipText.split(String.fromCharCode(13));
// 行を列に分割します
for (i = 0; i < clipRows.length; i++) {
clipRows[i] = clipRows[i].split(String.fromCharCode(9));
}
var $grid = $('#C1GridView1');
data = $grid.c1gridview("data");
var selectedIndex = $grid.c1gridview("selection").selectedCells().item(0).rowIndex();
for (var i = 0; i < clipRows.length - 1; i++) {
if (selectedIndex < data.length) {
data[selectedIndex] = clipRows[i];
}
else {
data.push(clipRows[i]);
}
selectedIndex++;
}
$grid.c1gridview('ensureControl', true);
$('#C1GridView1').c1gridview('doRefresh');
}
// コピー操作を処理します(ctrl + c)
else if (e.ctrlKey && (e.keyCode == 67)) {
var $grid = $('#C1GridView1');
var data = $grid.c1gridview("data");
//選択した行と列のインデックスを取得します
var selectedRows = $grid.c1gridview("selection").selectedCells()._getSelectedRowsIndicies();
var selectedColumns = $grid.c1gridview("selection").selectedCells()._getColumnsIndicies();
var dataToCopy = "";
for (var i = 0; i < selectedRows.length; i++) {
for (var j = 0; j < selectedColumns.length; j++) {
if (j == selectedColumns.length - 1) {
dataToCopy = dataToCopy + data[selectedRows[i]][selectedColumns[j]];
}
else {
dataToCopy = dataToCopy + data[selectedRows[i]][selectedColumns[j]] + "¥t";
}
}
if (i == selectedRows.length - 1) {
dataToCopy = dataToCopy;
}
else {
dataToCopy = dataToCopy + "¥n";
}
}
// クリップボードデータを設定します
window.clipboardData.setData('Text', dataToCopy);
}
});
// ペースト操作を処理します(ctrl + v)
if (e.ctrlKey && (e.keyCode == 86)) {
// クリップボードテキストを取得します
var clipText = window.clipboardData.getData('Text');
// 行に分割します
clipRows = clipText.split(String.fromCharCode(13));
// 行を列に分割します
for (i = 0; i < clipRows.length; i++) {
clipRows[i] = clipRows[i].split(String.fromCharCode(9));
}
var $grid = $('#C1GridView1');
data = $grid.c1gridview("data");
var selectedIndex = $grid.c1gridview("selection").selectedCells().item(0).rowIndex();
for (var i = 0; i < clipRows.length - 1; i++) {
if (selectedIndex < data.length) {
data[selectedIndex] = clipRows[i];
}
else {
data.push(clipRows[i]);
}
selectedIndex++;
}
$grid.c1gridview('ensureControl', true);
$('#C1GridView1').c1gridview('doRefresh');
}
// コピー操作を処理します(ctrl + c)
else if (e.ctrlKey && (e.keyCode == 67)) {
var $grid = $('#C1GridView1');
var data = $grid.c1gridview("data");
//選択した行と列のインデックスを取得します
var selectedRows = $grid.c1gridview("selection").selectedCells()._getSelectedRowsIndicies();
var selectedColumns = $grid.c1gridview("selection").selectedCells()._getColumnsIndicies();
var dataToCopy = "";
for (var i = 0; i < selectedRows.length; i++) {
for (var j = 0; j < selectedColumns.length; j++) {
if (j == selectedColumns.length - 1) {
dataToCopy = dataToCopy + data[selectedRows[i]][selectedColumns[j]];
}
else {
dataToCopy = dataToCopy + data[selectedRows[i]][selectedColumns[j]] + "¥t";
}
}
if (i == selectedRows.length - 1) {
dataToCopy = dataToCopy;
}
else {
dataToCopy = dataToCopy + "¥n";
}
}
// クリップボードデータを設定します
window.clipboardData.setData('Text', dataToCopy);
}
});
※1 このサンプルは複数行選択(ClientSelectionMode="MultiRow")で指定した範囲に対してコピー&ペーストが可能です。
※2 DBのテーブルとバインドしたグリッドにおいて、DBのテーブルが更新される訳ではありません。
旧文書番号
81027