AgGridReact 停止编辑并恢复旧值

AgGridReact stop editing and restore old value

我有一个带有 AgGridReact 的 React 组件,它有一个可编辑的列。我想在 onCellValueChanged 事件中检查新值是否满足某些条件,如果不满足则停止并恢复旧值。

我读到有一个 api stopEditing:

https://www.ag-grid.com/documentation/javascript/cell-editing/#editing-api

这里说:

"stopEditing(cancel): 如果网格正在编辑,则停止编辑。传递 cancel=true 将保留单元格的原始值,传递 cancel=false 将从单元格编辑器中获取最新值。"

所以我试过使用它。只是为了测试一下,我这样做了:

const onGridReady = params => 
{
  gridApi.current = params.api;
}

const onCellValueChanged = async (event) => 
{
  gridApi.current.stopEditing(true);
  return;
}

我希望每次我尝试编辑时,无论如何,只要我点击回车完成编辑,旧值就会恢复,但它只是保留新值。事件本身已正确设置并且正在被调用。

我在这里做错了什么?如果这不是恢复以前值的方法,那是什么?

stopEditinggridApi 上调用。通过在 onCellValueChanged 中调用 stopEditing,为时已晚,值已经更改。

您可以执行以下操作:

为您的专栏使用 valueSetter。这样,您可以只接受某些值并拒绝所有其他值。例如,这个 valueSetter 只会在新输入的值为“accept”时更新值:

function myValuSetter(params) {
    if (params.newValue != "accept") {
      return false;
    }
    params.data.make = params.newValue
    return true;
  }

Demo.