在过去的几天里,我已经阅读了大约一千个论坛帖子,并查看了许多代码示例,但我仍然无法弄清楚这一点。
我的目标是使用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属性,它可以扩展到我需要的内容。我以前从未见过这个,因为它不像其他所有字母顺序排列。
答案 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
如果您有任何其他问题,请不要犹豫。