循环通过动态创建的控件

时间:2012-03-01 10:30:40

标签: asp.net vb.net drop-down-menu foreach controls

我想要做的是动态创建一堆下拉列表然后我想循环遍历它们并使用这些值更新数据库,但我面临的问题是我创建了下拉列表,但是当时我回过头来看看他们不再是小组。我不知道为什么,但是当我调试时,我在pnlTeacherSelect中有50个控件,直到我按下调用prcChoose的按钮。

在页面加载时调用

Sub prcSetTeachers()
    For Each Subject In ds.Tables("Subject").Rows
        Dim Temp As New DropDownList
        pnlTeacherSelect.Controls.Add(Temp)
        Temp.ID = "drp" & Subject.Item(0) & "s" & Child.Item(0)
    Next
End Sub

在点击按钮

时调用
Sub prcChoose()
    For Each DropDownList In pnlTeacherSelect.Controls.OfType(Of DropDownList)

    'This is never executed

    Next
End Sub

任何想法是什么造成的?提前谢谢!

1 个答案:

答案 0 :(得分:2)

您必须在每次回发时重新创建所有动态创建的控件(最迟在加载事件中)。 您还必须确保它们获得与以前相同的ID以触发事件并维护ViewState。

如果您知道要创建的控件数量(可以存储在ViewState中),您可以通过将其附加到control-id来从计数器变量中获取ID。然后,您可以在页面的init事件中使用正确的ID重新创建它们。

可推荐的读物:

或者您使用内置Data-Bound Control之类的Repeater自动执行此操作。您只需设置DataSource并致电DataBind()。

以下是关于实施的类似问题的答案: