【问题标题】:AgGridReact stop editing and restore old valueAgGridReact 停止编辑并恢复旧值
【发布时间】:2021-04-19 13:34:19
【问题描述】:

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

我读到有一个apistopEditing

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

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

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

【问题讨论】:

    标签: reactjs ag-grid ag-grid-react


    【解决方案1】:

    stopEditinggridApi 上被调用。通过在你的onCellValueChanged 中调用stopEditing,为时已晚,值已经改变了。

    您可以这样做:

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

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

    Demo.

    【讨论】:

    • 如果我确实想接受该值,是否相当于将 onCellValueChanged 的​​代码复制到那里(只是到我想要返回 true 的地方)并完全删除 onCellValueChanged?
    • 是的,应该可以,完全删除 onCellValueChanged 并使用 valueSetter。
    • onCellEventChanged中查看newValue
    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2017-06-10
    • 2020-11-25
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    相关资源
    最近更新 更多