Slickgrid render () не поддерживает текущее редактирование ячейки активным

#editor #render #slickgrid

#редактор #рендеринг #slickgrid

Вопрос:

У меня есть событие ниже в моем dataview для обработки при изменении значений в коде. Проблема в том, что когда это вызывает вызов render(), любой существующий редактор должен быть зафиксирован. Я не хочу, чтобы это произошло. Или, по крайней мере, я хочу начать редактирование ячейки, которая активно редактировалась до вызова render() . Есть идеи о том, как не допустить фиксации или повторного открытия редактора?

 dataView.onRowsChanged.subscribe(function (e, args) {
    grid.invalidateRows(args.rows);
    grid.render();
    dataView.syncGridSelection(grid, true);
});
 

Ответ №1:

понял это. Изменил мой код на это, и он просто обновляет ячейку, а не сетку (_.each совпадает с циклом for , это подчеркивание js)

 dataView.onRowsChanged.subscribe(function (e, args) {
  _.each(args.rows, function (row) {
      grid.updateRow(row);
  })
  dataView.syncGridSelection(grid, true);
});
 

кроме того, если вы используете enableAddRow=true в настройках сетки, вам нужно будет сделать это при добавлении строки, чтобы она добавила строку и повторно включила редактор.

 dataView.onRowCountChanged.subscribe(function (e, args) {
  //store the active cell and editor
  var activeCell = grid.getActiveCell();
  var activeEditor = grid.getCellEditor();

  grid.render();
  grid.updateRowCount();

  //make the active cell editable
  if (activeEditor) {
    grid.setActiveCell(activeCell.row, activeCell.cell);
    grid.editActiveCell();
  }

  dataView.syncGridSelection(grid, true);
});