2

我无法将 DataGridView 中的新行保存回数据库。简要地,

1) 我使用 SqlDataAdapter 来填充 DataSet 中的 DataTable。

2) DataTable 是网格视图的数据源。

3) 如果用户单击 DataGridView 底部的空白“新行”,我会在 RowEnter 事件中捕获新的空行并用数据填充它。数据出现在 DataGridView 中。

4) 当我在 SqlDataAdapter 上调用 Update 时,新数据消失并且没有保存到数据库中。

在第 3 步和第 4 步之间,我尝试了 DataGrid.EndEdit、DataSet.AcceptChanges、BindingContext [...].EndCurrentEdit 以及其他一些可能没有成功的事情。

如何将更改从 DataGridView 传播回 DataSet?

而且,如果我可以被允许发出短暂的抱怨,为什么很难找到这样一个显而易见的事情的简单例子呢?

4

2 回答 2

1

我在这里的方法取得了成功:

http://msdn.microsoft.com/en-us/library/fbk67b6z.aspx

不过,我仍然认为很难在文档中找到答案。

于 2008-11-18T16:28:48.547 回答
1

据此 AcceptChanges 可能是问题所在。

去引用:

嘿,

您不能在更新前执行 AcceptChanges。AcceptChanges 使 RowState 恢复为 Unchanged(添加的行应该是 Additional RowState 值,更新的行应该是 Modified RowState 值)。

Update 语句应该为您调用 AcceptChanges

请注意,我在 MSDN 的任何地方都没有找到这个。

您会从一家要求 Google 查询自己的文档的公司购买搜索引擎吗?

于 2008-11-18T16:57:51.530 回答