VB asp.net:我想从数据库中添加一些数据到下拉列表中

ruarlubt  于 2023-01-03  发布在  .NET
关注(0)|答案(2)|浏览(121)

我想从数据库中添加一些数据到下拉列表中,并且没有重复的数据,所以我这样做了~

Dim ads As New Web.UI.WebControls.AccessDataSource
        ads.DataFile = "~/app_data/board.mdb"
        ads.SelectCommand = "SELECT DISTINCT [photo_species] FROM [phototable]"
        Dim dv As DataView = ads.Select(New DataSourceSelectArguments)
        For i = 0 To dv.Count - 1
            DropDownList1.Items.Add(dv.Item(0).Row("photo_species"))
        Next

但是当我运行代码时,它一次又一次地显示相同的数据

0yg35tkg

0yg35tkg1#

更改此行中的0:

DropDownList1.Items.Add(dv.Item(0).Row("photo_species"))

至i:

DropDownList1.Items.Add(dv.Item(i).Row("photo_species"))
pcww981p

pcww981p2#

不清楚这是一个vb.net(不是vb 6),也不清楚这是一个网页(ASP.NET),还是一个桌面程序?
如果这是asp.net(基于网络),则应该可以:
首先,Web标记如下:

<h3>Select Hotel</h3>
        <asp:DropDownList ID="DropDownList1" runat="server"
            DataValueField="ID"
            DataTextField="HotelName" height="30px" Width="206px">
        </asp:DropDownList>

与大多数唐斯一样,有(可以有)两列。
“隐藏”值-在大多数情况下是数据库PK行ID。
然后显示值。(因此在上述值字段和文本字段中)。
DataValueField =隐藏列-从下拉列表返回的值DataTextField =数据表中的显示列(要显示)。
因此,我们要加载的代码如下:

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()

    Using conn As New OleDbConnection(My.Settings.AccessDB)

        Dim strSQL =
            "SELECT ID, Hotelname FROM tblhotelsA ORDER BY HotelName"

        Using cmdSQL As New OleDbCommand(strSQL, conn)

            conn.Open()
            Dim rstData As New DataTable
            rstData.Load(cmdSQL.ExecuteReader)
            DropDownList1.DataSource = rstData
            DropDownList1.DataBind()

            ' add default please select
            DropDownList1.Items.Insert(0, New ListItem("Please Select Hotel", ""))
        End Using
    End Using

End Sub

我们现在得到这个:

如果在代码中我们需要测试/获取/查看/抓取所选的值呢?
然后使用此代码:

Debug.Print("drop down pk (id) = " & DropDownList1.SelectedItem.Value)
    Debug.Print("drop down hotel text = " & DropDownList1.SelectedItem.Text)

上面的代码允许您同时获取两列(隐藏列)和text/display列。
一般来说,还可以使用下拉列表的.Text属性来获取所选值。
这个也得到了值。

Debug.Print("drop down value = " & DropDownList1.Text)

因此,上面的值将返回与DropDownList1.SelectedItem.Value相同的值

相关问题