我正在使用自定义模板类来生成带有我的转发器控件的行,我希望能够从我的 aspx 页面后面的代码中动态地指定此转发器中的控件。在后面的代码中,我将控件添加到这样的列表中:
Dim lstControls As New List(Of Control)
lstControls.Add(New TextBox)
lstControls.Add(New Label)
lstControls.Add(New CheckBox)
lstControls.Add(New DropDownList)
lstControls.Add(New CheckBox)
然后我使用这一行将控件添加到我的模板
rptrSummary.ItemTemplate = New myTemplate(ListItemType.Item, , lstControls)
从 instantiateIn sub 我正在做这样的事情:
Dim ph As New PlaceHolder
For i = 0 To lstControls.Count - 1
ph.Controls.Add(lstControls(i))
Next
这不能正常工作,并且在我的转发器控件的 .databind() 之后,我指定的控件仅出现在最后一行。我认为这是因为我只将控件声明为 NEW 一次,所以我只有一行值。
tldr?/ 结论:
如何生成与列表中的控件相同类型的新控件?就像是:
Dim newControl as new Control = type(lstControl(0))
(这显然行不通)