0

我的 Windows 窗体应用程序中有一个 DataGridView 控件。我想做的是:我想重新加载视图,以便在绑定的数据库表发生更改时显示正确的数据。换句话说,当我使用 sql 查询而不是 DataGridView1.Rows.Remove(DataGridView1.CurrentRow) 属性删除记录时,我希望对 datagridview 也发生更改。例如:我有一个绑定到 datagridview 的客户表。当我删除一条记录时,比如说 ID=5 的记录,我希望在运行时从 gridview 中删除该行。这可能吗?

编辑:

每次我删除客户以重新绑定数据源时,我都会调用此过程

Private Sub reloadDataset()
        DataGridView1.DataSource = ""
        DataGridView1.DataSource = CustomerBindingSource
    End Sub

但它不起作用....我做错了什么?谢谢你的努力..

编辑 2

澄清一下:CustomerBindingSource 有 DataSource(myDatasource) 和数据成员表 customers

4

1 回答 1

2

我无法从您发布的有限代码中看出,但如果您使用的是 BindingSource,则需要确保重新加载它是 DataSource,而不是 DataGridView DataSource。DataGridView 可以保持绑定到相同的 BindingSource:

Private Sub Load()

   'Tell DataGridView to use BindingSource.
    DataGridView1.DataSource = CustomerBindingSource

   'Fetch the table.
   'Tell the BindingSource what you want it to wrap/use as it's DataSource.
   CustomerBindingSource.DataSource = FetchData()

End Sub

Private Sub Reload()

   'We have made some changes and need to refresh/reload.
   'We need to re-fetch the table and re-bind it to BindingSource's DataSource.
   CustomerBindingSource.DataSource = FetchData()

End Sub

Private Function FetchData() as DataTable

     Using Conn As New Data.SqlClient.SqlConnection("connectionString"),
        Command As New Data.SqlClient.SqlCommand("SQLQuery", Conn),
        Adapter As New Data.SqlClient.SqlDataAdapter(Command)

        Dim Table As New DataTable

        Adapter.Fill(Table)

        Return Table

    End Using

End Function

FetchData 返回 BindingSource 可以绑定的数据表,但您可以返回任何可以绑定的对象。请注意,此 FetchData 实现特定于 SQL Server。

于 2012-06-01T19:32:54.023 回答