【发布时间】:2014-05-30 01:18:54
【问题描述】:
情况是这样的:
我有一个链接到 TableAdapter 的 DataGridView。由于 Table 的某些列对 DataGridView 隐藏,因此必须在将更改提交到数据库之前添加隐藏列的内容(其中一些是外键)。
我要做的是拦截添加的行,将数据添加到相关列,然后继续提交更改。代码如下:
var createdRows = (ExampleDataset.ExampleTableDataTable)this.ExampleDataset.ExampleTable.GetChanges(DataRowState.Added);
try
{
if(createdRows != null)
{
foreach(var row in createdRows)
{
row.ID_OTHER_TABLE = this.idOtherTable;
row.REF_OTHER_TABLE = this.refOtherTable;
}
}
this.exampleTableBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.ExampleDataSet);
this.ExampleDataSet.AcceptChanges();
}
catch(Exception ex)
{
MessageBox.Show("Error updating database: " + ex.Message);
}
通过在另一个视图中检查表并通过调试,我可以看到,正在捕获添加的行、正在编辑的字段、保存到数据库的行,但 foreach() 中的添加信息不是正在被保存。
【问题讨论】:
标签: c# sql .net datagridview datatable