簡體   English   中英

在asp.net,vb.net的下拉列表中選擇一個值

[英]Selecting a value in dropdownlist in asp.net, vb.net is code behind

我有一個dropdownlist填充page_load中的值列表。

我想選擇一個特定值

Me.DropDownList_LocalOfficeAssignment.SelectedValue = ct.LocalOfficeName
Me.DropDownList_LocalOfficeAssignment has list of values.

問題是:它總是指向第一項。

我嘗試了這個

For Each item As ListItem In Me.DropDownList_LocalOfficeAssignment.Items
    If item.Equals(ct.LocalOfficeName) Then
        item.Selected = True
        Exit For
    End If
Next
DV.Dispose()

仍然指向第一項。 我調試了,它應該指向最后一項。 ct.localoffice包含列表中的最后一項。 這就是我填充下拉列表的方式:

Dim DV As DataView = New DataView(CacheVariable.States.Tables(0))
Dim DRV As DataRowView
Me.DropDownList_LocalOfficeAssignment.Items.Clear()
DV = New DataView(CacheVariable.LocalOffice.Tables(0))
If DV.Count > 0 Then
    For Each DRV In DV
        Me.DropDownList_LocalOfficeAssignment.Items.Add(New ListItem(DRV("Name"), DRV("LocalOfficeID").ToString))
    Next
End If

這通常是因為在設置SelectedValue之后, DropDownList執行DataBind() 是否設置了DropDownList.DataSourceID屬性? 您是否在頁面生命周期的稍后階段調用DataBind()

基於對該問題的冗長評論...

當您嘗試設置SelectedValue時,您正在尋找錯誤的值。 看一下如何創建ListItem

Me.DropDownList_LocalOfficeAssignment.Items.Add(New ListItem(DRV("Name"), DRV("LocalOfficeID").ToString))

創建ListItem ,可以同時傳遞其顯示文本基礎值 在這種情況下,請將它們設置為:

  • 顯示文字= DRV("Name")
  • 底層值= DRV("LocalOfficeID")

根據您的評論,樣本數據如下所示:

LocalOfficeID | Name
--------------------
1             | abc
2             | def
3             | xyz

然后,當您嘗試手動設置SelectedValue ,將其傳遞給錯誤的值。 您實質上是在嘗試這樣做:

DropDownList_LocalOfficeAssignment.SelectedValue = "xyz"

ListItemValue屬性都不是"xyz" 它們是"1""2""3" 為了設置SelectedValue ,您需要:

DropDownList_LocalOfficeAssignment.SelectedValue = "3"

因此,此行需要更改:

Me.DropDownList_LocalOfficeAssignment.SelectedValue = ct.LocalOfficeName

ct對象上,您需要獲取對象的標識符 ,而不是其顯示名稱 大概是這樣的(盡管我不知道什么是ct ):

DropDownList_LocalOfficeAssignment.SelectedValue = ct.ID

如果沒有該標識符,則可以通過搜索顯示名稱在DropDownList上找到它。 這樣的事情應該可以工作,盡管可能有一種更優雅的方法:

DropDownList_LocalOfficeAssignment.SelectedIndex = DropDownList_LocalOfficeAssignment.Items.IndexOf(DropDownList_LocalOfficeAssignment.Items.FindByText(ct.LocalOfficeName))

但是,使用標識符會清潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM