将更改从GridView更新到数据库 [英] Update changes from GridView to database
本文介绍了将更改从GridView更新到数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请帮助我解决冲突.我为解决问题做出了不懈的努力,但真是太遗憾了.
我已经在Windows窗体的GridView中显示了数据.我希望当我在GridView上进行更改时,像使用Excel工作表一样,将更改反映回数据库中.
我目前正在使用此代码:
Please help me out to resolve a conflict. I have made untiring efforts to resolve, but coudln''t.
I have shown my data in a GridView in Windows Forms. I want that when I make chages on the GridView, using it like an Excel sheet, the changes should be reflected back in the database.
I am currently using this code:
da = new SqlDataAdapter();
cb = new SqlCommandBuilder(da);
myGridView.DataSource = ds.Tables["UserDetails"];
ds.AcceptChanges();
da.Update(ds, "UserDetails");
con.Close();
怎么了?如何编辑特定的单元格值?
What''s wrong? How can I edit specific cell values?
推荐答案
首先,DataTable.AcceptChanges
方法并没有按照您的想象做.这是DataTable
的工作原理的简要提要.最初加载所有数据时,它将每一行的DataRowState
设置为Unchanged
.每当对DataRow
进行更改时,状态都会更改为Added
,Deleted
或Modified
.记录此状态,以便当DataAdapter
需要更新数据库时,它确切知道它需要更新哪些行以及如何更新它们.
您的第一个问题是AcceptChanges
方法告诉DataTable将所有DataRowState
重置为Unchanged
,并告诉它删除状态为Deleted
的任何行.这意味着在调用Update命令时,DataAdapter
认为它不需要执行任何操作.
第一步是反转这两行代码.这可能会解决您的问题,但也可能不会.如果可行,那就是一个非常简单的解决方案.
但是,如果仍然有问题,则可能需要设置TableMappings
.我建议阅读以下内容: ADO.NET中的表映射 [
To begin with, theDataTable.AcceptChanges
method doesn''t do what you think it does. Here''s a brief synopsis of how theDataTable
works. When it initially loads all of the data, it sets each row''sDataRowState
toUnchanged
. Whenever a change is made to aDataRow
the state changes to eitherAdded
,Deleted
, orModified
. This state is recorded so that when aDataAdapter
needs to update the database, it knows exactly what rows it needs to update and how to update them.
Your first problem is that theAcceptChanges
method tells the DataTable to reset all of theDataRowState
s toUnchanged
and tells it to delete any rows with a state ofDeleted
. This means that when the Update command is called, theDataAdapter
thinks that it doesn''t need to do anything.
The first step is to reverse those two lines of code. This might solve your problem, but it also might not. If it works, then, it''s a pretty simple solution.
However, if you still have issues, you may need to set up theTableMappings
. I would suggest reading this: Table Mapping in ADO.NET[^] if you need to do that.
这篇关于将更改从GridView更新到数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文