2013-06-26 25 views
0

我正在從一個數據庫填充正在填充的數據表的列表框。這是相關的代碼。列表框選擇:DataRowView到類型Sting是無效的

Private Sub frmMainMenu_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     'Load data we need from the database 
     Dim commandCraneType As New OleDbCommand("SELECT Name FROM CraneType WHERE Girders = 'Single Girder'", gConnection) 
     Dim adapterCraneType As New OleDbDataAdapter(commandCraneType) 
     Dim dTableCraneType As New DataTable() 
     'Fill datatables and controls 
     adapterCraneType.Fill(dTableCraneType) 
     lboCraneType.DataSource = dTableCraneType 
     lboCraneType.DisplayMember = "Name" 
End Sub 

Private Sub lboCraneType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lboCraneType.SelectedIndexChanged 
     'Set the gCraneType global variable! 
     gCraneType = lboCraneType.SelectedItem 
     Debug.Print(gCraneType) 
End Sub 

該列表框正確填充數據庫的名稱字段中的文本值。但是,當我在列表框中選擇該項目時,調試告訴我gCraneType已被分配System ... DataRowView,並且我收到一個異常,說我不能將該類型轉換爲字符串。我不明白爲什麼名稱在列表框中正確顯示,但選擇是數據類型。

感謝所有幫助您提供:)

+0

dTableCraneType是一個DataTable。 SelectedItem是DataRow而不是DataTable。 – Paparazzi

+0

看看這個http://stackoverflow.com/questions/16006741/windows-forms-listbox-selecteditem-displaying-system-data-datarowview-styles和這個http://stackoverflow.com/questions/11117932/get -selecteditems-from-database-fed-listbox and this http://stackoverflow.com/questions/15428542/why-i-get-system-data-datarowview-instead-of-real-values-in-my-listbox – Chris

+0

我應該如何改變我將gCraneType設置爲lboCraneType中所選文本的操作? – kmaz13

回答

0

變化:

Private Sub lboCraneType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lboCraneType.SelectedIndexChanged 
     'Set the gCraneType global variable! 
     gCraneType = lboCraneType.SelectedItem 
     Debug.Print(gCraneType) 
End Sub 

要:

Private Sub lboCraneType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lboCraneType.SelectedIndexChanged 
     'Set the gCraneType global variable! 
     Dim drv As DataRowView = lboCraneType.SelectedItem 
     gCraneType = drv("Name").ToString 
End Sub 

感謝您在commnets你的幫助。