当数据集vb.net发生更改时重新加载DataGridView

时间:2012-06-01 08:43:10

标签: sql-server vb.net visual-studio-2010

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

修改

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

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

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

编辑2

只是为了澄清:CustomerBindingSource有DataSource(myDatasource)和datamember表客户

1 个答案:

答案 0 :(得分: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。