首页 > 解决方案 > 使用组合框将 datagridview 绑定到数据源

问题描述

我在问之前读了这些:

VB:如何将 DataTable 绑定到 DataGridView?

http://msdn.microsoft.com/en-us/library/fbk67b6z(v=vs.100).aspx

我有一个非常简单的问题。vb.net winforms 项目包含几个数据表、一个组合框和一个数据网格视图。

我可以选择要显示的数据表:

datagridview1.datasource = dt1 'or dt2 or dt3

这很好用。

我想要做的是从组合框选择中选择要显示的数据表,我之前在其中定义了一个组合框项目集合,因此:

combobox1.item.add("dt1")
combobox1.item.add("dt2")
combobox1.item.add("dt3")

我把这条线

datagridview.datasource = combobox1.SelectedItem

ComboBox1_SelectedIndexChanged事件中。

这只是空白我的datagridview。我最初的想法是这失败了,因为我正在将一个字符串传递给需要一个对象的东西,所以我尝试过datagridview.datasource = CObj(combobox1.SelectedItem)但没有更好的结果。

我做错了什么简单的事情?

标签: vb.netwinformsdatagridviewbindingdatasource

解决方案


将 DataTable 对象引用直接添加到ComboBox.Items集合中。

combobox1.DisplayMember = "TableName"
combobox1.DataSource = {dt1, dt2, dt3}
' Or... (DisplayMember value applies anyway)
'combobox1.Items.AddRange({dt1, dt2, dt3})

在 ComboBox SelectionChangeCommitted事件处理程序中,设置DataGridView.DataSource

Private Sub combobox1_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles combobox1.SelectionChangeCommitted
    dataGridView1.DataSource = DirectCast(combobox1.SelectedItem, DataTable)
End Sub

如果您想改用该SelectedIndexChanged事件,请检查是否SelectedIndex < 0以及Return是否是。


推荐阅读