我想將ItemName從 sql 表加載到Listbox 并將ItemId、ItemName和Details值獲取到文本框。

到目前為止,我每次打開或加載視窗時都有此代碼,它在串列框中顯示 itemName。這很好。
Dim cmd As New SqlCommand("select * FROM Items")
cmd.Connection = connection
Dim adp As New SqlDataAdapter(cmd)
Dim dt As New DataTable()
adp.Fill(dt)
ListBox1.DataSource = dt
ListBox1.DisplayMember = "ItemName"
但問題是:我該怎么辦,如果我單擊串列框中的專案之一,它將自動在 sql 表的文本框中顯示 itemId、ItemName 和 Details。我需要幫助。謝謝你!

uj5u.com熱心網友回復:
要ListBox使用TextBoxes同步專案的選擇,請使用BindingSource. 當您添加DataBindings到 時,TextBox您將傳遞您希望系結到的屬性名稱、BindingSource變數和您希望系結的DataMember(列名)。
大多數資料庫物件都需要處理。Connection并Command有Dispose需要呼叫的方法。幸運的是 vb.netUsing...End Using為我們提供了塊來處理這個問題。這也將關閉連接。連接應該Using在使用它們的方法中用塊宣告,以便可以處理它們。
你不需要一個DataAdapter. 只需使用 aDataReader并加載DataTable.
您可以將連接字串直接傳遞給連接的建構式。您還可以將CommandText和傳遞Connection給 的建構式Command。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt = GetDataFromSql()
Dim BndSrc As New BindingSource()
BndSrc.DataSource = dt
ListBox1.DisplayMember = "ItemName"
ListBox1.DataSource = BndSrc
TextBox1.DataBindings.Add("Text", BndSrc, "ItemID")
TextBox2.DataBindings.Add("Text", BndSrc, "ItemName")
TextBox3.DataBindings.Add("Text", BndSrc, "Details")
End Sub
Private Function GetDataFromSql() As DataTable
Dim dt As New DataTable
Using connection As New SqlConnection("Your connection string"),
cmd As New SqlCommand("select * FROM Items", connection)
connection.Open()
Using reader = cmd.ExecuteReader
dt.Load(reader)
End Using
End Using
Return dt
End Function
uj5u.com熱心網友回復:
Private Sub Form3_Load(sender As Object, e As EventArgs) 處理 MyBase.Load
con = New SqlConnection("ConnectionString")
con.Open()
cmd = New SqlCommand("select * from [dbo].[Item_Details]", con)
rdr = cmd.ExecuteReader()
While rdr.Read
ListBox1.Items.Add(rdr(1))
End While
con.Close()
End Sub
Private Sub ListBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseClick
Try
con = New SqlConnection("ConnectionString")
con.Open()
da = New SqlDataAdapter("Select * from Item_Details where itemname='" & ListBox1.SelectedItem.ToString() & "'", con)
Dim dt As New DataTable
da.Fill(dt)
For Each row As DataRow In dt.Rows
TextBox1.Text = row(0).ToString()
TextBox2.Text = row(1).ToString()
TextBox3.Text = row(2).ToString()
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318274.html
