3

標準の CheckBoxList コントロールのより詳細な項目テンプレートを作成しようとしています。TemplateControl と呼ばれる ITemplate プロパティを公開していますが、実際の使用方法に関する簡単なリソースを見つけることができませんでした。これまでのコードは次のとおりです。

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
    MyBase.OnLoad(e)

    Dim items As New List(Of ListItem)
    items.Add(New ListItem() With {.Text = "A", .Value = "1"})
    items.Add(New ListItem() With {.Text = "B", .Value = "2"})
    items.Add(New ListItem() With {.Text = "C", .Value = "3"})

    Dim lst As New CheckBoxList()
    Dim tpl As ITemplate = LoadTemplate("~/CustomListItem.ascx")
    Dim g As New TemplateControlWrapper()
    tpl.InstantiateIn(g)
    lst.TemplateControl = g
    lst.DataSource = items
    lst.DataBind()

    Form.Controls.Add(lst)

End Sub

Class TemplateControlWrapper
    Inherits UserControl

End Class

TemplateControl プロパティを完全に無視しているようです。何か案は?

4

2 に答える 2

5

CheckBoxList の TemplateControl プロパティでは、実際には CheckBoxList のテンプレートを変更できません。これは、System.Web.UI.Control からすべて継承されたプロパティであり、CheckBoxList が存在するテンプレート化されたコントロールを意味します。別の言い方をすれば、コントロールが存在する .aspx ページ、.ascx ユーザー コントロール、またはマスター ページです。生き続けます。(コントロールが複合コントロールの一部として含まれている場合、正直なところ、TemplateControl プロパティが null を返すかどうか、または Page または UserControl が見つかるまでコントロール チェーンを上っていくかどうかは、実験しないとわかりません。)

CheckBoxList コントロールは、実行しようとしている種類のテンプレート変更を提供しません。探している機能を実現するために、Repeater または DataList (ItemTemplate の CheckBox コントロールを使用) をカスタム バインドする必要がある場合があります。

于 2010-02-01T20:35:22.677 に答える
1

いくつか不足しています...このMSDNページには非常に簡単な例があります: http://msdn.microsoft.com/en-us/library/36574bf6.aspx

まず、INamingContainer がありません。

于 2010-02-01T20:19:22.387 に答える