2013-08-30 58 views
1

在過去的幾天中,我已閱讀了大約一千個論壇帖子,並查看了許多代碼示例,但我仍然無法弄清楚。vb.net將組合框綁定到數據源

我的目標是使用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作爲數據源。 我也嘗試使用數組作爲數據源。

如果我從IDE的數據源選項卡上拖動控件,它將正確滾動記錄,但它只會顯示值,而不是查詢'查找'值,我希望組合框顯示。我已經嘗試從Data Sources選項卡拖動它後更改組合框的DisplayMember和ValueMember屬性,這似乎也打破了功能。

我在這裏尋找一些最佳實踐。我知道我錯過了一些簡單的東西,我很抱歉發佈了一個已經被覆蓋了很多次的問題,但我可以在這裏使用一些個人幫助。

編輯:我最終能夠使用Visual Studio IDE Properties窗口完成我的目標。控件的第二個屬性是一個Data Bindings屬性,它擴展到我所需要的。我之前從未看過這個,因爲它不像其他所有字母那樣按字母順序排列。

回答

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 

如果您有任何更多的問題,請不要猶豫,問。

+0

謝謝你的回答。我最終能夠使用IDE Properties窗口完成我的目標。控件的第二個屬性是一個Data Bindings屬性,它擴展到我所需要的。我之前從未看到過,因爲它不像其他所有物業那樣按字母順序排列。 –