C# 在DataGridView中,如何将预编辑的单元格值返回到该行中?

C# 在DataGridView中,如何将预编辑的单元格值返回到该行中?,c#,datagridview,C#,Datagridview,我创建了一个DataRow,并将其设置为数据集的行,该行是网格的等效当前行。我想隔离原始的预编辑值,以便在用户取消对该行的编辑时,可以恢复到网格中的这些值。但网格似乎绑定到数据集,因此它不会隔离原始的预编辑单元格值。我进行了编码,因此它在CellBeginEdit事件中只创建一次数据行。但每次编辑单元格时,数据行都会发生变化并反映新编辑的值。我尝试使用DataGridViewRow,但它也会随着每个单元格的编辑而自动更改,而不是在创建该行时作为该行的独立快照。这是我的密码: private vo

我创建了一个DataRow,并将其设置为数据集的行,该行是网格的等效当前行。我想隔离原始的预编辑值,以便在用户取消对该行的编辑时,可以恢复到网格中的这些值。但网格似乎绑定到数据集,因此它不会隔离原始的预编辑单元格值。我进行了编码,因此它在CellBeginEdit事件中只创建一次数据行。但每次编辑单元格时,数据行都会发生变化并反映新编辑的值。我尝试使用DataGridViewRow,但它也会随着每个单元格的编辑而自动更改,而不是在创建该行时作为该行的独立快照。这是我的密码:

private void gridDB_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)

{

string test;
//DataGridViewRow currRow= new DataGridViewRow(); This kept updating with each edit   


//rowSet is public bool and currRow is public DataRow
if (rowSet != true) 
{    
    currRow = dSet.Tables[0].Rows[gridDB.CurrentRow.Index];    
    rowSet = true;
}

test = "In CellBeginEdit " + currRow[0].ToString() + "  " +
       currRow[1].ToString() + "  " +
       currRow[2].ToString() + "  " +
       currRow[3].ToString() + "  " +
       currRow[4].ToString();

MessageBox.Show(test);
}
每次到达这个测试字符串时,它都会显示每个新编辑的单元格编辑。这告诉我currRow在创建时不是DataSet行的静态快照

请告诉我为什么这不起作用,并建议我实现这一目标的最佳方法

谢谢大家!


Valhalla

检查一下:它是否像使用grid.EndEdit一样简单;和网格。取消编辑;???我只是试着简单地把gridDB.EndEdit放进去;和gridDB.CancelEdit;而且它似乎在起作用。这似乎太简单了,所以我怀疑这是否就是全部。谢谢Emmad…它有相同的标题,但不是我想要的…如果你想将所有值重置为原点,那么展示如何将数据获取到DataGridView。只需将数据源复制到某个变量,并在reset命令中恢复它