Pregunta

Estoy tratando de crear una plantilla de elementos más detallados para el control CheckBoxList estándar. Se expone una propiedad llamada ITemplate TemplateControl pero no fue capaz de encontrar un recurso sencillo de cómo hacer uso de ella. Aquí está el código que tengo hasta ahora:

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

Parece estar haciendo caso omiso de la propiedad TemplateControl por completo. Algunas ideas?

¿Fue útil?

Solución

TemplateControl propiedad de CheckBoxList en realidad no permite modificar la plantilla de la CheckBoxList. Se trata de una propiedad heredada todo el camino desde System.Web.UI.Control, y los medios de control con plantilla que la CheckBoxList vive en, o dicho de otra manera, la página .aspx, .ascx control de usuario o página maestra que el control vive en. (Si el control se incluye como parte de un control compuesto, honestamente no sé sin experimentar si la propiedad TemplateControl volvería nulo, o seguir subiendo la cadena de control hasta que se encontró una página o control de usuario.)

El control CheckBoxList no ofrece el tipo de modificación de la plantilla que busca hacer. Es posible que necesite a medida unen un repetidor o DataList (con un control CheckBox en el ItemTemplate) con el fin de lograr la funcionalidad que usted está buscando.

Otros consejos

Te faltan un par de cosas ... esta página de MSDN tiene un sencillo ejemplo bastante: http://msdn.microsoft.com/en-us/library/36574bf6. aspx

Para empezar, se echa en falta INamingContainer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top