0

カスタム テンプレート クラスを使用して、リピーター コントロールで行を生成しています。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))

(これは明らかに機能しません)

4

1 に答える 1

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 はラベルになりました

于 2012-12-18T12:20:20.080 に答える