【问题标题】:Binding a listbox with value and text使用值和文本绑定列表框
【发布时间】:2011-01-25 16:36:21
【问题描述】:

我正在创建一个这样的 listCollection:

Dim risList As New ListItemCollection
        Dim cUser As New clsUser()
        Dim ds As DataSet = cUser.GetUserRIS(1)
        For Each row In ds.Tables(0).Rows
            Dim li As New ListItem
            li.Text = cLookup.GetxName(row.Item("xCode"))
            li.Value = row.Item("xCode")
            risList.Add(li)
        Next

然后我需要将下拉列表与它绑定

  ddlRIS.DataSource = risList
        ddlRIS.DataBind()

但是我在下拉菜单中的文本和值都显示了文本。当我调试上面的代码时 li.Value = row.Item("risCode") 正确显示了代码,但是当我尝试将它绑定到下拉列表时为什么它没有反映?

【问题讨论】:

    标签: .net asp.net vb.net list drop-down-menu


    【解决方案1】:

    您为什么不将它直接添加到 ListBox/DropDownList 作为一种解决方法,但您的方式应该可行。

    Dim risList As New ListItemCollection
    Dim cUser As New clsUser()
    Dim ds As DataSet = cUser.GetUserRIS(1)
    For Each row In ds.Tables(0).Rows
        Dim li As New ListItem
        li.Text = cLookup.GetxName(row.Item("xCode"))
        li.Value = row.Item("xCode")
        ddlRIS.Items.Add(li)
    Next
    

    现在您可以通过以下方式访问文本和值:(分别)

    Dim txt1 As String, val1 As String
    txt1 = ddlRIS.SelectedItem.Text
    val1 = ddlRIS.SelectedItem.Value
    

    希望对您有所帮助。

    【讨论】:

    • 这行得通,谢谢 :) 我不知道我为什么要做额外的步骤 :)
    【解决方案2】:

    您是否将下拉菜单上的 DataValueField 设置为 Text 属性?值绑定到什么属性?

    另外,您也可以将项目添加到下拉列表中,而不是构造 ListItemCollection 并将其绑定到列表。

    最后,作为旁注,ListItem 类,当 value 属性不存储任何内容时,它默认返回文本值。所以我不知道这是否是一个绑定问题,或者这是发生了什么......

    【讨论】:

    • 如何动态地将值和文本添加到下拉列表或列表控件中?好像。 lstText.items.add 方法只带一个参数...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2013-10-21
    相关资源
    最近更新 更多