我一直在使用绑定到DataTable的DataGridView开发一些应用程序。所以,现在我需要做一件事:用户可以编辑一些字段,当他点击“保存”时,应用程序必须以编程方式更改某些字段。我正在尝试使用此代码,但它不起作用:
private void toolStripMenuItemSaveChanges_Click(object sender, EventArgs e)
{
try
{
dataGridViewPersons.BindingContext[table].EndCurrentEdit();
//
DataTable changes = table.GetChanges();
if (changes != null)
{
Console.WriteLine("edited rows=" + table.GetChanges().Rows.Count);
foreach (DataRow row in changes.Rows)
{
row[29] = getRightBody(row, 7, 18);
row[30] = "-";
row[31] = getRightBody(row, 23, 25);
row[32] = getRightBody(row, 26, 28);
}
}
else
{
Console.WriteLine("edited rows=0");
}
adapter.Update(table);
}
catch (Exception exeption)
{
this.Text = exeption.Message;
}
}
如果有已编辑的行,则此代码不会更改绑定的DataTable中的字段;我认为GetChanges()返回DataTable与原始DataTable的关系,但现在我知道它是假的。请告诉我这个决定。先感谢您。