#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);
});