繁体   English   中英

如何在datagridview中更新单元格?

[英]how to update cell in datagridview?

我有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 )和BindingSource (如果自动生成,可能称为YOURTABLENAMEBidingSource )。

要更新数据库,您必须调用BindingSource.EndEdit(),然后调用TableAdapter.Update()。 完成此操作后,您可以刷新数据。

编辑

既然您已经提供了更好的信息,我可以给您更好的答案。 在我之前的回答中,我假设您使用设计器创建了所有内容,因为您不想使用SQL来进行更新。 显然我错了。

要实现您的目标,您应该使用OleDbCommandBuilder类,它给出一个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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM