代码之家  ›  专栏  ›  技术社区  ›  Gold

如何更新DataGridView中的单元格?

  •  1
  • Gold  · 技术社区  · 15 年前

    我有连接到数据库的DataGridView(访问)

    如果我停留在任何单元格上并更改该值,请A查看该值是否已更改

    但是当我刷新时,我看到值回到了原始值。

    如何更新此单元格(不使用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();
    

    拜托,我必须找到怎么做……

    提前感谢

    1 回复  |  直到 15 年前
        1
  •  4
  •   il_guru 0xAX    15 年前

    如果您的DataGridView连接到数据库,并且您不想使用SQL,我可以假设它绑定到了一个数据源。如果通过Visual Studio设计器执行此操作,则 TableAdapter (如果自动生成,可能调用 您的表名称表适配器 和A BindingSource (如果自动生成,可能调用 您的姓名投标来源 )

    要更新数据库,必须先调用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");
    
    推荐文章