No display custom Tag in asp.net
I am building custom asp.net server control. It is used in design time but no display run time. I write this.
<cc1:TemplateMenu ID="TemplateMenu1" runat="server">
<HeaderTemplate>
<asp:Label ID="Title" Text="Hello World" runat="server"></asp:Label>
</HeaderTemplate>
<SperatorTemplate>|</SperatorTemplate>
<FooterTemplate>
<asp:TextBox ID="TextBox" Text="" runat="server"></asp:TextBox>
<asp:Button ID="Button" Text="Click Me" runat="server"/>
</FooterTemplate>
</cc1:TemplateMenu>
This is design time.
This is server control code file.
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports Yoma.Yoma.CustomControls.BasicTemplate
Namespace Yoma.CustomControls.TemplateMenu
<DefaultProperty("Text"), ToolboxData("<{0}:TemplateMenu runat=server></{0}:TemplateMenu>")> _
Public Class TemplateMenu
Inherits CompositeControl
Private MenuData As New ArrayList
Public Sub New()
MenuData = New ArrayList
Dim Menu开发者_JAVA技巧Item As New ListItem
MenuItem.Text = "Apress"
MenuItem.Value = "http://www.apress.com"
MenuData.Add(MenuItem)
MenuItem = New ListItem
MenuItem.Text = "Microsoft"
MenuItem.Value = "http://www.microsoft.com"
MenuData.Add(MenuItem)
MenuItem = New ListItem
MenuItem.Text = "ASP.Net"
MenuItem.Value = "http://asp.net"
MenuData.Add(MenuItem)
End Sub
#Region "HeaderTemplate"
Private _HeaderTemplate As ITemplate = Nothing
<Browsable(False), Description("The header template"), PersistenceMode(PersistenceMode.InnerProperty)> _
Public Property HeaderTemplate() As ITemplate
Get
Return _HeaderTemplate
End Get
Set(ByVal value As ITemplate)
_HeaderTemplate = value
End Set
End Property
#End Region
#Region "FooterTemplate"
Private _FooterTemplate As ITemplate = Nothing
<Browsable(False), Description("The footer template"), PersistenceMode(PersistenceMode.InnerProperty)> _
Public Property FooterTemplate() As ITemplate
Get
Return _FooterTemplate
End Get
Set(ByVal value As ITemplate)
_FooterTemplate = value
End Set
End Property
#End Region
#Region "SperatorTemplate"
Private _SperatorTemplate As ITemplate = Nothing
<Browsable(False), Description("The sperator template"), PersistenceMode(PersistenceMode.InnerProperty)> _
Public Property SperatorTemplate() As ITemplate
Get
Return _SperatorTemplate
End Get
Set(ByVal value As ITemplate)
_SperatorTemplate = value
End Set
End Property
#End Region
#Region "Create Control"
Public Sub CreateControlHierarchy()
If HeaderTemplate Is Nothing Then
Dim Header As New BasicTemplateContainer
HeaderTemplate.InstantiateIn(Header)
Controls.Add(Header)
End If
Dim Count As Integer = MenuData.Count
For Each Item As ListItem In MenuData
Dim Link As New HyperLink
Link.Text = Item.Text
Link.NavigateUrl = Item.Value
Controls.Add(Link)
Controls.Add(New LiteralControl("|"))
Next
If FooterTemplate Is Nothing Then
Dim Footer As New BasicTemplateContainer
FooterTemplate.InstantiateIn(Footer)
Controls.Add(Footer)
End If
End Sub
Protected Overrides Sub CreateChildControls()
Controls.Clear()
CreateControlHierarchy()
End Sub
Public Overrides ReadOnly Property Controls() As ControlCollection
Get
EnsureChildControls()
Return MyBase.Controls
End Get
End Property
Public Overrides Sub DataBind()
CreateChildControls()
ChildControlsCreated = True
MyBase.DataBind()
End Sub
#End Region
End Class
End Namespace
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Namespace Yoma.CustomControls.BasicTemplate
<DefaultProperty("Text"), ToolboxData("<{0}:BasicTemplateContainer runat=server></{0}:BasicTemplateContainer>")> _
Public Class BasicTemplateContainer
Inherits WebControl
Implements INamingContainer
Public Sub New()
Me.BorderWidth = 2
Me.BorderStyle = WebControls.BorderStyle.Outset
End Sub
End Class
End Namespace
Please help me... I got a really problem.
Have you invoked DataBind method for your control from your Page code? Unless you do that, your control tree may not be created.
精彩评论