使用组合框将datagridview绑定到数据源

时间:2020-04-06 09:08:11

标签: vb.net winforms datagridview binding datasource

我在询问之前先阅读了这些内容

VB: How to bind a DataTable to a DataGridView?

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

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

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

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),但没有更好的结果。

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

3 个答案:

答案 0 :(得分:1)

将您的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

答案 1 :(得分:0)

您的ComboBox只是一个字符串列表,因此当您执行datagridview.datasource = combobox1.SelectedItem时,实际上并没有将数据源设置为数据表。

在您的ComboBox1_SelectedIndexChanged事件中,我该怎么做:

Select Case combobox1.SelectedItem
    Case "dt1"
        datagridview1.datasource = dt1
    Case "dt2"
        datagridview1.datasource = dt2
    Case "dt3"
        datagridview1.datasource = dt3
End Select

答案 2 :(得分:0)

我通常用C#编写代码,但是这种回旋方法可以工作:

    If combobox1.SelectedItem = "dt1" Then
        datagridview1.DataSource = dt1
    ElseIf combobox1.SelectedItem = "dt2" Then
        datagridview1.DataSource = dt2
    ElseIf combobox1.SelectedItem = "dt3" Then
        datagridview1.DataSource = dt3
    End If
相关问题