通过动态创建控件循环
问题描述:
我想要做的是动态创建一堆下拉列表,然后我想遍历它们并使用这些值更新数据库,但是我面临的问题是我创建了下拉列表列表,但当我回到循环中时,他们不再在面板中。我不知道为什么,但是当我正在调试时,我在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
任何想法是什么引起的呢?提前致谢!
答
您必须在每次回发时重新创建所有动态创建的控件(最迟在加载事件中)。 您还必须确保它们获得与以前相同的ID以触发事件并保持ViewState。
如果您知道要创建的控件的数量(可以存储在ViewState
中),您可以通过将计数器变量附加到控件ID来派生ID。然后,您可以使用页面的init
事件中的正确标识重新创建它们。
Recommandable读数:
或者你可以使用内建的像Repeater自动做到这一点的一个。您只需设置DataSource
并致电DataBind
()。
这里是我的答案上实现类似的问题:
谢谢!这很好地解释了它。我宁愿它没有;这将意味着相当多的摆弄,但是哦。再次感谢! – 2012-03-01 11:23:48