【问题标题】:How to update only one row in a DataGridView?如何只更新 DataGridView 中的一行?
【发布时间】:2010-10-31 05:43:28
【问题描述】:

我有一个从 DataTableAdatper 填充的 DataGridView,如 this tutorial

我猜因为它是一个 ODBC MySQL 连接,它不会为我生成 DBDirectMethods。

我的问题是如何在用户在网格中编辑后更新数据库中的特定行?我需要在我的适配器中指定一个 DeleteCommand 吗?什么时候调用?

【问题讨论】:

    标签: c# .net database datagridview data-access-layer


    【解决方案1】:

    您通常不需要自己创建 DeleteCommand、UpdateCommand 和 InsertCommand:CommandBuilder 可以为您完成:

    private void UpdateCurrentRow()
    {
        DataRowView drv = dataGridView1.CurrentRow.DataBoundItem as DataRowView;
        DataRow[] rowsToUpdate = new DataRow[] { drv.Row };
    
        OdbcDataAdapter adapter = new OdbcDataAdapter("SELECT * FROM FOO", connection);
        OdbcCommandBuilder builder = new OdbcCommandBuilder(adapter);
        adapter.Update(rowsToUpdate);
    }
    

    【讨论】:

    • 但是我如何告诉它要更新哪些行?网格控件不能这样做吗? (即决定修改了哪些行,并为它们调用更新?)
    • DataGridView 更新其 DataSource(即您的案例中的 DataSet),但您有责任更新数据库以反映 DataSet 中的更改。您也可以在整个DataTable上调用adapter.Update,只有修改过的行才会在数据库中更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多