2013-11-24 22 views
-1

尋找一種方法從ComboBox中填充100多個值中選擇的字符串值。 下面的函數旨在從數據庫獲取預期值並將值返回給ComboBox。獲取ComboBox文本內容並傳遞給TextBox

Public Function popuList(Optional dt As DataTable = Nothing) 
    Dim daParties As New OleDb.OleDbDataAdapter("SELECT party_ID, party_Name FROM tbl_Parties ORDER BY party_Name;", connKMVTDB) 
    Dim dsParties As New DataSet 
    Dim dtParties As New DataTable 

    daParties.Fill(dsParties, "party_Name") 
    dtParties = dsParties.Tables(0) 

    Return dtParties 
End Function 

正如預期的那樣,下面的事件也可以正常工作。

Private Sub btnPartyLOV_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles btnPartyLOV.Click 
    If cmbPartiesList.Visibility = Windows.Visibility.Visible Then 
     cmbPartiesList.Visibility = Windows.Visibility.Hidden 
    Else 
     Dim dtParties As DataTable 
     dtParties = popuList() 

     cmbPartiesList.ItemsSource = dtParties.DefaultView 
     cmbPartiesList.DisplayMemberPath = dtParties.Columns(1).ToString 
     cmbPartiesList.SelectedValuePath = dtParties.Columns(0).ToString 

     cmbPartiesList.Visibility = Windows.Visibility.Visible 
     'cmbPartiesList.SelectedIndex = 0 
    End If 
End Sub 

但是,如何將選定的文本值從組合框到另一個文本框?下面嘗試並堅持...

Private Sub cmbPartiesList_SelectionChanged(sender As Object, e As System.Windows.Controls.SelectionChangedEventArgs) Handles cmbPartiesList.SelectionChanged 
    Dim selItem As String = DirectCast(cmbPartiesList.SelectedItem, ComboBoxItem).Content.ToString() 

    MsgBox(selItem) 
    lblID.Content = cmbPartiesList.SelectedValue 
    txtAdd1.Text = cmbPartiesList.DisplayMemberPath 
    cmbPartiesList.Visibility = Windows.Visibility.Hidden 
End Sub 

我多次得到錯誤...

無法轉換的類型 'System.Data.DataRowView' 對象鍵入 「System.Windows.Controls .ComboBoxItem'

在這裏滯留很長時間,任何幫助將不勝感激&稱讚。

+0

我想你不能將cmbPartiesList.SelectedItem轉換爲ComboBoxItem – har07

回答

0

請記住... ToString()是你的朋友!

它像這樣簡單:

Private Sub cmbPartiesList_SelectionChanged(sender As Object, e As System.Windows.Controls.SelectionChangedEventArgs) Handles cmbPartiesList.SelectionChanged 
    Dim selItem As String = cmbPartiesList.SelectedItem.ToString() 
    MsgBox(selItem) 

    lblID.Content = cmbPartiesList.SelectedValue 
    txtAdd1.Text = cmbPartiesList.DisplayMemberPath 
    cmbPartiesList.Visibility = Windows.Visibility.Hidden 
End Sub 
0

我試過了馬修,有沒有用。看...

Private Sub cmbPartiesList_SelectionChanged(sender As Object, e As System.Windows.Controls.SelectionChangedEventArgs) Handles cmbPartiesList.SelectionChanged 
    Dim drv As DataRowView = cmbPartiesList.SelectedItem 
    txtPName.Text = drv.Item(1).ToString() 
End Sub 

這解決了我的問題,錯誤,懷疑等 在這裏,我創建了一個DataRowView的類來存儲這些通話過程中傳遞的當前行項目。結果作爲一行收集並將它們與項目對象分開,這基本上暴露了基礎結果。不管怎麼樣,謝謝你的時間。 以上任何建議/更正/修改/改進/批評是非常感謝。

相關問題