在运行时以编程方式向下拉列表添加值

5
我正在尝试根据另一个下拉列表的值更改下拉列表项的值。 drpAdult 的列表值范围从 0 到 9,drpInfant 的列表值范围从 0 到(所选 drpAdult 的值)。
例如,如果我在 drpAdult 下拉列表中选择了 5,则 drpInfant 的列表项值范围将从 0 到 5。
我编写了以下代码,但它没有填充 drpInfant 下拉列表中的值,我正在尝试在 drpAdult_SelectedIndexChanged 事件上插入这些值。
Protected Sub drpAdult_SelectedIndexChanged(ByVal sender As Object, 
 ByVal e As EventArgs) Handles drpAdult.SelectedIndexChanged  

    Dim count As Integer    
    count = drpAdult.Items.Count
    Dim i As Integer
    i = 0
     While count > 0
        i = i + 1

        drpInfant.Items.Add(New ListItem(i, i))
        count = count - 1

    End While
End Sub

什么可能导致这个问题,我该如何解决它?

请说明“我的代码无法工作”的意思是什么? - Tim Schmelter
我的意思是说,在drpAdult_SelectedIndexChanged事件中我试图插入的drpInfant下拉列表中没有填充值。 - ubaid ashraf
谢谢Andeas,它确实是VB.net。 - ubaid ashraf
这是一个ajax请求(更新面板)吗? 你什么时候最初绑定下拉列表(页面加载,页面预呈现)?如果不是回发,你只绑定初始值吗? - Damian
3个回答

0

不确定“is not working”是什么意思,但这似乎更容易:

Dim newCount = drpAdult.Items.Count + 1
For i As Int32 = 0 To newCount
    Dim newItem As New ListItem(i.ToString, i.ToString)
    drpInfant.Items.Add(newItem)
Next

@ubaidashrafmasoody: 你使用过调试器查看发生了什么吗?在这个事件被触发之前,您是否在page_load中数据绑定了一个或两个下拉列表?这个事件是否被触发(在那里设置断点)? - Tim Schmelter
@ubaidashrafmasoody:那我假设您在PostBack时也会在Page_Load中绑定'drpAdult'。这将防止事件被触发。请使用“If Not IsPostBack Then ...”将数据绑定包围起来。 - Tim Schmelter
程序正常运行,drpAdult 的 Auto Postback 值为 false,我将其更改为 true,现在可以正常工作。 - ubaid ashraf

0

大致上是这样的...

drpInfant.Items.Clear()
dim n as Integer
Integer.TryParse(drpAdult.SelectedValue, n)

For i as integer = 1 to n
  if n < i Then Exit For 'it's not fun when this condition happens in VB
  drpInfant.Items.Add(New ListItem(i, i))
Next

我也尝试过这个,但仍然没有变化。最初,drpInfant已经有两个列表项为0和1。如果它们被覆盖,那没关系,只要我能根据drpAdult的选择值得到相应的值即可。 - ubaid ashraf

0
你可以试试这个。我已经测试过了,运行良好:
    Protected Sub drpAdult_SelectedIndexChanged(sender As Object, e As EventArgs)

    drpInfant.Items.Clear()

    Dim count As Integer = drpAdult.SelectedIndex
    Dim i As Integer = 0

    While count >= 0
        drpInfant.Items.Add(New ListItem(i.ToString(), i.ToString()))

        i = i + 1
        count = count - 1
    End While
End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接