Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
LoadData
End If
End Sub
Sub Loaddata()
Dim strSQL As string =
"SELECT ID, HotelName FROM tblHotelsA
ORDER BY HotelName"
Dim cmdSQL As New SqlCommand(strSQL)
ListBox1.DataSource = MyrstP(cmdSQL)
ListBox1.DataBind()
End Sub
Protected Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim PKID As Integer = ListBox1.SelectedItem.Value
Dim cmdSQL As New SqlCommand("SELECT * FROM tblHotelsA WHERE ID = @ID")
cmdSQL.Parameters.Add("@ID", SqlDbType.Int).Value = PKID
Dim rstData As DataTable = MyrstP(cmdSQL)
With rstData.Rows(0)
txtHotel.Text = .Item("HotelName")
txtCity.Text = .Item("City")
txtDesc.Text = .Item("Description")
End With
End Sub
Public Function MyrstP(cmdSQL As SqlCommand) As DataTable
Dim rstData As New DataTable
Using mycon As New SqlConnection(GetConstr)
Using (cmdSQL)
cmdSQL.Connection = mycon
mycon.Open()
rstData.Load(cmdSQL.ExecuteReader)
End Using
End Using
Return rstData
End Function
1条答案
按热度按时间ubbxdtey1#
实际上,查询返回3列还是10列并不重要。
列表框只提供了2列。因此,在大多数情况下,您将“值”存储为数据库“ID”列,然后您将有一列用于显示第二列。
获取“其他”列-列表框中不包含的列?
您通常必须使用“ID”并重新提取(使用另一个查询)以获取其他列。
因此,假设我们有一个列表框,它将显示ID和HotelName(2列)。如果您为列表框提供5列或10列,这真的没有关系,它仍然只会使用+ store + have 2列。
因此,让我们设置一个列表框,当您单击给定的酒店时,我们将在网页上显示该表中的其他列。
所以,这个列表框,还要多显示一点其他的列:
我们的代码如下:
现在我们看到了:
因此,请注意我们是如何自由地从数据库中获取/使用/拥有任何列的。然而,由于列表框只保存这两列,因此我们必须根据LB选择再次访问数据库,拉取额外的列,此时我们可以自由地使用/拥有/享受使用所有数据库列,而不仅仅是在数据库中使用的列。