![](/img/trans.png)
[英]Populating an ASP.Net DropDownList using VB.Net coding in code-behind file
[英]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"
ListItem
的Value
屬性都不是"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.