我在数据视图下面有一个事件来处理代码中值的更改。问题是,当它激活时,对render()的调用会导致任何现有的编辑器被提交。我不希望这种情况发生。或者至少我想在调用render()之前开始编辑正在编辑的单元格。关于如何让编辑器不提交或重新打开的任何想法?
dataView.onRowsChanged.subscribe(function (e, args) {
grid.invalidateRows(args.rows);
grid.render();
dataView.syncGridSelection(grid, true);
});
答案 0 :(得分:2)
想通了。将我的代码更改为此,它只更新单元格而不是网格(_.each与for循环相同,它是下划线js)
dataView.onRowsChanged.subscribe(function (e, args) {
_.each(args.rows, function (row) {
grid.updateRow(row);
})
dataView.syncGridSelection(grid, true);
});
另外如果你在gridOptions中使用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);
});