Ag grid 对于ag网格,是否可以访问旧数据?

Ag grid 对于ag网格,是否可以访问旧数据?,ag-grid,ag-grid-react,Ag Grid,Ag Grid React,我正在创建一些自定义内联编辑功能,并尝试在用户对特定列进行编辑后单击“取消”时重置数据我正在为此使用CellRenders,因此我无法访问cellEditor所需的编辑参数。 当前,我所做的是在单击特定行时,将该行的数据保存为React状态originalRowInfo: const moreInfoClick=(事件、切换moreinfo、行数据)=>{ event.persist(); setMoreInfoLocation({x:event.clientX,y:event.clientY}

我正在创建一些自定义内联编辑功能,并尝试在用户对特定列进行编辑后单击“取消”时重置数据我正在为此使用
CellRenders
,因此我无法访问
cellEditor
所需的编辑参数。

当前,我所做的是在单击特定行时,将该行的数据保存为React状态
originalRowInfo

const moreInfoClick=(事件、切换moreinfo、行数据)=>{
event.persist();
setMoreInfoLocation({x:event.clientX,y:event.clientY});
setRowInfo(rowData);
setOriginalRowInfo({…rowData});
切换MoreInfo(真);
};
单击行时,我通过params.data获取行数据

我不能只使用rowInfo状态的原因是,每当我对列进行编辑时,ag grid就会改变这种状态。但是使用
{…rowData}
似乎可以解决这个问题

我现在唯一的问题是我的一个列值是一个包含对象的数组,当我编辑该列时,它在
originalRowInfo
中也会发生更改。我想这与对象引用有关

该列如下所示:

[
{位置:1,加热次数:100},
{位置:2,加热次数:200}
]
实际编辑的是
heat\u num


我能想到的唯一一件事是在取消时从DB中重新提取数据,但我宁愿不这样做。

如果用户取消编辑,您不需要
原始行信息
重置为原始状态,但您可能会做相反的操作:在用户编辑和执行以下操作时,将新值
inputValue
保存为临时状态:

  • 如果用户提交结果:调用
    ICellRenderParams.setValue(inputValue)
    提交结果
  • 否则,如果用户中止:只需将
    inputValue
    重置为
    icellrenderparams.value
    即原始值,即可放弃结果
函数EditableCellRenderer(参数:IcellRenderParams){
const[editable,setEditable]=React.useState(false);
常量[原始数据]=React.useState(参数值);
常量[inputValue,setInputValue]=React.useState(params.value);
const inputRef=React.useRef(null);
const onEdit=()=>{
可编辑设置(真);
设置超时(()=>{
inputRef.current?.focus();
});
};
const onCancel=()=>{
设置输入值(原始数据);
可编辑设置(假);
};
const onSubmit=()=>{
参数设置值(inputValue);
可编辑设置(假);
};
返回(
setInputValue(e.target.value)}
已禁用={!可编辑}
/>
E
X
s
);
}
现场演示

谢谢您的回复!这肯定比我的方法干净得多,但我有一个问题。一次编辑一行中的多个列是否有效?您可以查看@aus_10