asp.net - 在运行时从后面的代码将项目添加到 DropDownList
问题描述
在前端我有这样的东西:
<asp:DropDownList ID="MyBadDropDown" AutoPostBack="true" AppendDataBoundItems="true" runat="server" OnChange="valueChanged()" DataTextField="Text" DataValueField="Value"></asp:DropDownList>
在后端作为测试代码我有这样的东西:
Dim listCol As New ListItemCollection
listCol.Add(New ListItem With {.Value = ""})
listCol.Add(New ListItem With {.Value = ConvertValue(Of String)("640", "0"), .Text = "New Item"})
Me.hidValeuForThis.Value = "640"
Me.MyBadDropDown.DataSource = listCol
Me.MyBadDropDown.DataBind()
但是当我点击那部分代码时,新项目不会被添加到下拉项目中,直到有回发......所以它不会自动显示在下拉项目中。我该如何解决?
解决方案
我简化了一点,它似乎工作。
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"
DataTextField="Text" DataValueField="Value" Height="16px"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
后面的代码...
Public Class _Default
Inherits Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim listCol As New ListItemCollection
listCol.Add(New ListItem(String.Empty, String.Empty))
listCol.Add(New ListItem("New Item", "640"))
listCol.Add(New ListItem("Another Item", "950"))
DropDownList1.DataSource = listCol
DropDownList1.DataBind()
End If
End Sub
Protected Sub DropDownList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DropDownList1.SelectedIndexChanged
Debug.Print(DropDownList1.SelectedValue)
Debug.Print(DropDownList1.SelectedItem.ToString)
End Sub
End Class
推荐阅读
- spring - 在 Wildfly 服务器中部署 Spring Boot WAR 时如何外部化 .properties 文件?
- scala - Scala 对象什么都不扩展
- azure - 使用 Azure B2B 时,Asp Net Core Correlation 失败
- javascript - javascript从其他页面读取json字符串
- kotlin - 为什么firestore多个whereEqualTo不起作用
- angular - 单击到Angular 7中的另一个组件时从mat-table传递数据行
- python - 根据python中的列值选择csv的特定行
- ocr - 寻找快速和肮脏的图像匹配以从游戏截图中提取数据
- swift - 字典比最大比较快吗
- vue.js - 了解 Vue 路由