我创建了一个DataRow并将其设置为等于DataSet的行,该行是网格的等效当前行。我想隔离原始的预编辑值,这样如果用户取消该行的编辑,我就可以恢复到网格中的这些值。但网格似乎绑定到DataSet,因此它不会隔离原始的预编辑单元格值。我编码所以它只在CellBeginEdit事件中创建一次DataRow。但每次编辑单元格时,DataRow都会更改并反映新编辑的值。我尝试使用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