vb.net将组合框绑定到数据源

时间:2013-08-30 21:07:37

标签: vb.net binding combobox

在过去的几天里,我已经阅读了大约一千个论坛帖子,并查看了许多代码示例,但我仍然无法弄清楚这一点。

我的目标是使用Access 2007查询中的值填充组合框。我可以通过使用DataSource,DisplayMember和ValueMember属性来完成此操作,但无论查询中的数据如何,组合框都默认为items集合中的第一个项目,并且在移动主BindingSource时不会更改。我用这行代码绑定控件:

 ComboBox1.DataSource = DataSet1.qryItemSourceTest
 ComboBox1.DisplayMember = "SourceTestDisplayField"
 ComboBox1.ValueMember = "SourceTestIDField"
 Combobox1.DataBindings.Add(New Binding("SelectedValue", qryTestBindingSource, "TestField", True))

我也尝试使用BindingSource作为DataSource。 我也尝试使用数组作为数据源。

如果我从IDE中的“数据源”选项卡上拖动控件,它将正确滚动记录,但它只显示值,而不显示我希望组合框显示的查询“查找”值。我已经尝试在从“数据源”选项卡中拖动组合框之后更改组合框的DisplayMember和ValueMember属性,这似乎也会破坏功能。

我在这里寻找一些最佳实践。我知道我在这里错过了一些简单的事情,我为发布已经被多次覆盖的问题而道歉,但我可以在这里使用一些个人帮助。

编辑:我最终能够使用Visual Studio IDE属性窗口完成目标。控件上的第二个属性是Data Bindings属性,它可以扩展到我需要的内容。我以前从未见过这个,因为它不像其他所有字母顺序排列。

1 个答案:

答案 0 :(得分:1)

您好,您可以执行此代码将数据填充到组合

Try

        Dim cn As New OleDbConnection
        cn.ConnectionString = conString
        cn.Open()

        cmd.Connection = cn
        cmd.CommandText = "your query"

        'Execte reader function is used to hold more than one value from the table
        dr = cmd.ExecuteReader()


        ' Fill a combo box with the datareader
        Do While dr.Read = True
            ComboBox1 = dr.Item(0)
        Loop

        cn.Close()

    Catch ex As Exception
        MsgBox(ex.Message)

    End Try

如果您有任何其他问题,请不要犹豫。