Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 创建与已声明的另一个控件类型相同的新控件_Asp.net_Vb.net_Winforms_Controls - Fatal编程技术网

Asp.net 创建与已声明的另一个控件类型相同的新控件

Asp.net 创建与已声明的另一个控件类型相同的新控件,asp.net,vb.net,winforms,controls,Asp.net,Vb.net,Winforms,Controls,我使用一个自定义模板类来生成带有中继器控件的行,我希望能够从我的aspx页面后面的代码中动态地指定这个中继器中的控件。 在代码隐藏中,我将控件添加到如下列表: Dim lstControls As New List(Of Control) lstControls.Add(New TextBox) lstControls.Add(New Label) lstControls.Add(New CheckBox) lstControls.Add(New DropDownList) lstControl

我使用一个自定义模板类来生成带有中继器控件的行,我希望能够从我的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)
Dim ph As New PlaceHolder

For i = 0 To lstControls.Count - 1
    ph.Controls.Add(lstControls(i))
Next
然后,我使用此行将控件添加到模板中

rptrSummary.ItemTemplate = New myTemplate(ListItemType.Item, , lstControls)
从这个角度来看,我正在做这样的事情:

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)
Dim ph As New PlaceHolder

For i = 0 To lstControls.Count - 1
    ph.Controls.Add(lstControls(i))
Next
这无法正常工作,我的repeater控件的.databind()后面的控件我指定的控件只显示在最后一行。我想这是因为我只将控件声明为新控件一次,所以我只有一行值

tldr?/结论:

如何生成与列表中的控件类型相同的新控件?比如:

Dim newControl as new Control = type(lstControl(0))

(这显然不起作用)

我找到了答案,下面是一些例子,以防其他人被卡住(我也可以更改标题,使其更类似于可能的搜索条件):

newObject1现在是一个文本框 newObject2现在是一个标签