カスタム テンプレート クラスを使用して、リピーター コントロールで行を生成しています。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 サブから、私は次のようなことをしています:
Dim ph As New PlaceHolder
For i = 0 To lstControls.Count - 1
ph.Controls.Add(lstControls(i))
Next
これは正しく機能せず、リピーター コントロールの .databind() に続いて、指定したコントロールが最終行にのみ表示されます。これは、コントロールを NEW として 1 回だけ宣言したためだと思います。そのため、1 行しか価値がありません。
tldr?/ 結論:
リストからコントロールと同じタイプの新しいコントロールを生成するにはどうすればよいですか? 何かのようなもの:
Dim newControl as new Control = type(lstControl(0))
(これは明らかに機能しません)