Kendo Grid - Изменить одну ячейку и обновить выбранные ячейки - PullRequest
0 голосов
/ 09 мая 2018

В настоящее время я использую Kendo Grid в редактируемом режиме, где я хочу выбрать несколько ячеек в одном из столбцов сетки, и если я внесу изменения в последнюю выбранную ячейку, это последнее измененное значение должно быть установлено для всех выбранных ячеек.

Я не уверен, возможно ли это или нет.

Может кто-нибудь помочь мне в этом?

1 Ответ

0 голосов
/ 09 мая 2018

Вам нужна пара вещей, чтобы сделать эту работу

  • сетка
    • выбор: «несколько, ячейка»
    • редактируемый: true
    • панель инструментов: ["создать", "сохранить", "отменить"] (при удаленных данных)
    • изменить обработчик событий, чтобы сохранить выбранные ячейки и перевести одну из них в режим редактирования
    • сохранить обработчик событий для распространения отредактированного значения в выбранные ячейки
    • обработчик события нажатия клавиши для определения клавиши ввода в качестве действия сохранения сохранения
  • DataSource
    • пакетный режим (при удаленных данных)

В отношении гиперактивных пальцев могут быть некоторые странные случаи.

Проверьте это додзё , которое имеет следующую кодировку:

Сетка с обработчиками событий, закодированными в параметрах конфигурации

change: function (e) {
  selected = (this.select().length > 1) ? this.select() : null;
  if (selected) {
    this.editCell($(selected[selected.length-1]));
  }
},
save: function (e) {
  if (e.values) {
    for (var field in e.values) {
      // propogate edited field value to each selected
      for (var i=0; i<selected.length; i++) {
        var uid = $(selected[i]).closest("tr").data("uid");
        var model = this.dataSource.getByUid(uid);
        model.set(field,e.values[field]);
      }

      // should be only one field
      break;
    }
  }
},

и введите ключ обнаружения

$("#grid tbody").on("keydown", "tr", function (e) {
    var grid = $("#grid").data("kendoGrid");

    //get the pressed key code
    var code = (e.keyCode ? e.keyCode : e.which);
    if (code == 13) { //Enter keycode
        $(e.srcElement).closest("tbody").focus();
        setTimeout(function () {
            grid.saveRow();
        })
    }
});
...