1

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

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

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

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

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

我在这里寻找一些最佳实践。我知道我在这里遗漏了一些简单的东西,对于发布一个已经被多次讨论的问题,我深表歉意,但我可以在这里使用一些个人帮助。

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

4

1 回答 1

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

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

于 2013-08-31T02:46:26.430 回答