2010-02-01 1 views
3

표준 CheckBoxList 컨트롤에 대한보다 자세한 항목 템플릿을 만들려고합니다. 그것은 TemplateControl라는 ITemplate 속성을 노출하지만 실제로 사용하는 방법에 대한 간단한 리소스를 찾을 수 없습니다. 여기에 내가 가지고있는 코드가 있습니다 :CheckBoxList TemplateControl을 사용자 지정 UserControl으로 바꾸시겠습니까?

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 속성을 완전히 무시한 것 같습니다. 어떤 아이디어?

답변

5

CheckBoxList의 TemplateControl 속성을 사용하면 실제로 CheckBoxList의 템플릿을 수정할 수 없습니다. 이 속성은 System.Web.UI.Control에서 계속 상속되는 속성이며 CheckBoxList가 살고있는 템플릿 컨트롤 또는 다른 방법으로 .aspx 페이지, .ascx 사용자 컨트롤 또는 컨트롤이있는 마스터 페이지를 의미합니다. 에 살다. (컨트롤이 복합 컨트롤의 일부로 포함 된 경우 TemplateControl 속성이 null을 반환하는지 실험하지 않고 정직하게 알지 못하거나 페이지 또는 UserControl을 찾을 때까지 제어 체인을 계속 올라갑니다.)

CheckBoxList 컨트롤은 사용자가 찾고자하는 종류의 템플릿 수정을 제공하지 않습니다. 원하는 기능을 수행하려면 Repeater 또는 DataList (ItemTemplate의 CheckBox 컨트롤 사용)를 사용자 정의 바인딩해야 할 수 있습니다.

+0

직접 답변 해 주셔서 감사합니다. 이것은 MSDN 설명서 어디서나 언급 되었습니까 아니면 그냥 일반적인 지식입니까? – Kevin

+0

잘 모르겠지만, 언젠가 부모 제어 트리를 가로 질러서 더 나은 방법이 있어야한다고 생각하면서 실수로 우연히 발견되었습니다. 문제에 관한 문서가 별보다 작 으면 놀라지 않을 것입니다. –

1

이 MSDN 페이지는 매우 간단 예제가 ... 몇 가지 누락 : http://msdn.microsoft.com/en-us/library/36574bf6.aspx

우선, 당신이 누락하는 INamingContainer를.

+0

무슨 뜻인지 확실치 않습니다. CheckBoxList에 대한 TemplateControl을 사용자 정의 UserControl으로 바꾸려고합니다. http://msdn.microsoft.com/en-us/library/system.web.ui.templatecontrol.loadtemplate.aspx – Kevin

+0

아 ... 나는 당신의 질문에 대해 오해했습니다. CheckBoxList처럼 작동하지만 템플릿을 사용하는 새 컨트롤을 만드는 것으로 생각했습니다. – Bryan

관련 문제