我有连接到我的数据库(访问)的 datagridview
如果我停留在任何单元格上并更改值,则会看到该值已更改
但是当我进行刷新时,我看到该值又回到了原始值。
我如何更新这个单元格(没有sql查询)
我将数据集绑定到 datagridview,如下所示:
dsView = new DataSet();
adp = new OleDbDataAdapter("SELECT * FROM Items", Conn);
adp.Fill(dsView, "Items");
this.dataGridView1.DataSource = dsView.Tables["Items"].DefaultView;
adp.Dispose();
拜托,我必须找到该怎么做......
提前致谢
如果您的 datagridview 连接到数据库并且您不想使用 SQL,我可以假设它绑定到数据源。如果您通过 Visual Studio Designer 执行此操作,应该会出现TableAdapter
(如果自动生成,可能称为YOURTABLENAMETableAdapter) and a BindingSource
(如果自动生成,可能称为YOURTABLENAME出价来源).
要更新数据库,您必须调用 BindingSource.EndEdit(),然后调用 TableAdapter.Update()。完成此操作后,您可以刷新数据。
EDIT
现在您已经提供了更好的信息,我可以给您更好的答案。
在我之前的回答中,我假设您使用设计器创建了所有内容,因为您不想使用 SQL 进行更新。显然我错了。
为了实现您正在寻找的目标,您应该使用OleDbCommandBuilder http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommandbuilder.aspx类,给定一个SELECT
命令,自动为您的表生成简单的编辑命令(插入/更新/删除)。
这是使用您的代码的示例:
dsView = new DataSet();
adp = new OleDbDataAdapter("SELECT * FROM Items", Conn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adp);
adp.Fill(dsView, "Items");
this.dataGridView1.DataSource = dsView.Tables["Items"].DefaultView;
//adp.Dispose(); You should dispose you adp only when it is not loger needed (eg: after performing the update)
现在,在对数据进行更改后,您可以调用
adp.Update(dsView, "Items");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)