我一直在开发一些将 DataGridView 绑定到 DataTable 的应用程序。所以,现在我需要做一件事:用户可以编辑一些字段,当他点击“保存”时,应用程序必须以编程方式更改一些字段。我正在尝试使用此代码,但它不起作用:
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 的关系,但现在我知道它是错误的。请告诉我决定。先感谢您。