Скопировать все данные сетки Wijmo в буфер обмена в угловых 5
Я пытаюсь скопировать все данные из текущей сетки в буфер обмена одним нажатием кнопки, чтобы их можно было вставить в любое место (Excel, Блокнот и т. Д.)
Я попытался использовать класс wijmo.Clipboard, и у меня не получилось.
import * as wjcCore from 'wijmo/wijmo';
@ViewChild('grid') grid: GridComponent;
copysGrid() {
let hdr = '';
for (let c = 1; c < this.grid.columns.length; c++) {
hdr += '\t';
hdr += this.grid.columns[c].header;
}
let cellRange = new CellRange(-1, -1, -1, -1);
this.grid.select(cellRange);
cellRange = new CellRange(1, 1, this.grid.rows.length - 1, this.grid.columns.length - 1);
const gridData = this.grid.getClipString(cellRange);
const a = hdr + '\r\n' + gridData;
// wjcCore.Clipboard.copy(a);
const selBox = document.createElement('textarea');
selBox.style.position = 'fixed';
selBox.style.left = '0';
selBox.style.top = '0';
selBox.style.opacity = '0';
selBox.value = a;
document.body.appendChild(selBox);
selBox.focus();
selBox.select();
document.execCommand('copy');
document.body.removeChild(selBox);
}
Кто-нибудь может мне помочь, как это сделать.
1 ответ
Ваш код выглядит хорошо для меня. У меня есть что-то похожее в этой скрипке:
https://jsfiddle.net/Wijmo5/4pxLtk0o/
document.getElementById('btnCopyAll').addEventListener('click', function(e) {
// get clip string from the grid (all grid data)
var g = theGrid,
rng = new wijmo.grid.CellRange(0, 0, g.rows.length - 1, g.columns.length - 1),
clipString = g.getClipString(rng);
// add headers
var hdr = '';
for (var c = rng.leftCol; c <= rng.rightCol; c++) {
if (hdr) hdr += '\t';
hdr += g.columns[c].header;
}
clipString = hdr + '\n' + clipString;
// copy it to the clipboard using a temporary textarea element
var input = document.createElement('textarea');
document.body.appendChild(input);
input.value = clipString;
input.select();
document.execCommand('copy');
document.body.removeChild(input);
alert('The data has been copied to the clipboard.');
// return focus to the button
e.target.focus();
})
Одно предостережение в том, что execCommand('copy') работает только в том случае, если метод был вызван действием пользователя, например нажатием кнопки. Для более подробной информации, пожалуйста, обратитесь к:
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard