Работа с Буфером Обмена

Чтобы включить работу с буфером обмена в DataTable посредством сочетаний клавиш CTRL+C/CTRL+V, используйте параметр clipboard.

Параметр может принимать следующие значения:

  • "block" (или true);
  • "selection";
  • "repeat";
  • "custom"

Задание желаемого сценария для копирования

webix.ui({
    view:"datatable",
    clipboard:"selection",
});

Related sample:  Copying between Grids

Копирование "block"

webix.ui({
    view:"datatable",
    clipboard:true, // или "block"
});

Как это работает:

  • Если область копирования меньше области вставки, копируемые значения заполнят ячейки слева направо, оставляя остальные ячейки нетронутыми.
  • Если область копирования больше области вставки, копируемые значения заполнят ячейки области вставки и ячейки справа и снизу от нее, до тех пор, пока все значения не будут вставлены.

Related sample:  'Block' Copying

Копирование "selection"

webix.ui({
    view:"datatable",
    clipboard:"selection",
});

Как это работает:

  • Если область копирования меньше области вставки, копируемые значения заполнят ячейки слева направо, оставляя остальные ячейки нетронутыми.
  • Если область копирования больше области вставки, копируемые значения заполнят ячейки только области вставки. Остальные значения вставлены не будут.

Related sample:  'Selection' Copying

Копирование "repeat"

webix.ui({
    view:"datatable",
    clipboard:"repeat",
});

Как это работает:

  • Если область копирования меньше области вставки, копируемые значения заполнят все ячейки области вставки. Скопированные значения будут повторно копироваться в оставшиеся ячейки, пока все из них не заполнятся.
  • Если область копирования больше области вставки, копируемые значения заполнят ячейки только области вставки. Остальные значения вставлены не будут.

Related sample:  'Repeat' Copying

Копирование "custom"

Буфер обмена с типом "custom" позволяет задавать свою логику для операций копирования-вставки.

grid = webix.ui({
    view:"datatable",
    clipboard:"custom",
    select:"row",
    autoConfig:true,
    data:grid_data
});

Предопределенное поведение для операции вставки будут отменено. Именно поэтому, вам нужно указать свою логику в обработчике события onPaste event handler. Например:

grid.attachEvent("onPaste", function(text) {
    // ваша логика для операции вставки
    var sel = this.getSelectedId(true);
    sel.forEach(item => {
        this.getItem(item.row)[item.column] = "test";
        this.refresh(item.row);
    });
});

Событие onPaste вызывается когда пользователь нажимает CTRL+V.

Related sample:  Custom Clipboard (Datatable)

Наверх
If you have not checked yet, be sure to visit site of our main product Webix js frameworks and page of javascript data table product.