我正在使用自定义模板类来生成具有我的转发器控件的行,我希望能够从我的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))
(这显然不起作用)
答案 0 :(得分:0)
我找到了答案,这里有一些例子,以防其他人被卡住(我也可能更改标题,因此它更可能与搜索标准相似):
dim egTextbox as new textbox
dim egLabel as new label
dim newObject1 as Object = Activator.CreateInstance(egTextbox.GetType)
dim newObject2 as Object = Activator.CreateInstance(egLabel.GetType)
newObject1现在是一个文本框 newObject2现在是一个标签