我有一个页面,其中包含动态生成的下拉列表控件,我希望动态下拉列表执行AutoPostback以使用所选值填充其他字段。这是我用来动态创建控件的代码:
If (Not IsPostBack) Then
Dim newDDL As DropDownList = New DropDownList()
AddHandler newDDL.SelectedIndexChanged, AddressOf ChangeValue
newDDL.ID = "Level1"
[fill the DropDownList]
newDDL.Items.Insert(results.Count, New ListItem("", -1))
newDDL.Width = "300"
newDDL.AutoPostBack = True
newDDL.SelectedIndex = results.Count
LevelDDLs.Controls.Add(newDDL)
LevelDDLs.Controls.Add(New LiteralControl("<br /><br />"))
End If
在ASP页面上正确填充和呈现控件,但是在选择一个值后,页面将被重新加载(调用AutoPostBack)但控件不会显示,并且不会调用子控件。我在ChangeValue子中放了一个断点但是发生了什么。
我在帖子上读到第一个DropDownList的处理程序不是必需的,但是,如何告诉DropDownList在changevalue之后调用我的sub?
请问你能帮帮我吗?
非常感谢,答案 0 :(得分:1)
您必须设置Dropdown的ID,否则他们不会从ViewState重新创建他们的selectedindex并且不会引发任何事件。他们必须在每次回发中获得相同的唯一ID。
还必须在每次回发时重新创建动态添加的每个控件。这应该最迟在Page_Load中完成,因为在此page life cycle阶段后,将保存视图状态。