Slickgrid render()不保持当前单元格编辑处于活动状态

时间:2014-06-26 15:58:29

标签: editor render slickgrid

我在数据视图下面有一个事件来处理代码中值的更改。问题是,当它激活时,对render()的调用会导致任何现有的编辑器被提交。我不希望这种情况发生。或者至少我想在调用render()之前开始编辑正在编辑的单元格。关于如何让编辑器不提交或重新打开的任何想法?

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

1 个答案:

答案 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);
});