有幾個方式來看待這一點。
您可以預先在ListBox1
上設置ValueMember
。下面是ListBox
的值爲1到10的示例及其正方形。 ValueMember
是FacID,它只是數字。 DisplayMember
是FacID的正方形(用於演示目的!),證明您不需要顯示值成員。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i As Integer
Dim table As New DataTable()
Dim column1 As New DataColumn("FacID")
Dim column2 As New DataColumn("Square")
table.Columns.Add(column1)
table.Columns.Add(column2)
For i = 0 To 9
Dim row As DataRow = table.NewRow()
row("FacID") = i
row("Square") = i^2
table.Rows.Add(row)
Next i
Dim view As New DataView(table)
ListBox1.DataSource = view
' set the DisplayMember and ValueMember
ListBox1.DisplayMember = "Square"
ListBox1.ValueMember = "FacID"
End Sub
Private Sub ListBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ListBox1.Click
Dim message = "Selected value: " & ListBox1.SelectedValue.ToString()
MessageBox.Show(message)
End Sub
這是ListBox的將是什麼樣子,在運行時
當它被點擊時,顯示所選擇的值
如果消息這是在運行你提供的代碼之前完成的,那麼你幾乎可以使用你的代碼,因爲現在是ListBox1.ValueMember
是一個整數。請注意,您應該更嚴格,並將整數轉換爲字符串以準備查詢。
Dim query =
"SELECT DeptName FROM Departments " &
"inner JOIN Faculties ON Faculties.ID = Departments.FacID " &
"where FacID = '" & ListBox1.SelectedValue.ToString() & "'"
你也可以不設置ValueMember
。當未指定ValueMember
時,您的SelectedValue
默認爲DataSource
中的類型,即DataView
,對於所有意圖和目的,IList
的DataRowView。
由於沒有DisplayMember,列表框看起來像這樣
我認爲它不喜歡這一點。所以只需預先設置ValueMember
,你應該全部設置。
來源
2017-04-10 19:48:22
djv