Control Problem

S

shapper

Hi,

I created my first custom control.
I don't get any error when I use it but it doesn't show anything.
Could someone tell me if I am doing something wrong in my custom
control?
I am sure is something simple which I don't know.

Thanks,
Miguel

Here is my custom control code:

' -- [Import Namespaces] -------------------------------------------
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

' -- [Namespaces] -------------------------------------------

' Web
Namespace Web

' -- [Classes] -------------------------------------------
<DefaultProperty("Text"), ToolboxData("<{0}:Message
runat=server></{0}:Message>")> _
Public Class Message
Inherits WebControl

' -- [Properties] -------------------------------------------

' ImagePosition
<Bindable(True), Category("Layout"), DefaultValue(""),
Localizable(True)> Property ImagePosition() As String
Get
Dim pImagePosition As String = CStr(ViewState("ImagePosition"))
If pImagePosition Is Nothing Then
Return String.Empty
Else
Return pImagePosition
End If
End Get

Set(ByVal Value As String)
ViewState("ImagePosition") = Value
End Set

End Property

' ImageUrl
<Bindable(True), Category("Appearance"), DefaultValue(""),
Localizable(True)> Property ImageUrl() As String
Get
Dim pImageUrl As String = CStr(ViewState("ImageUrl"))
If pImageUrl Is Nothing Then
Return String.Empty
Else
Return pImageUrl
End If
End Get

Set(ByVal Value As String)
ViewState("ImageUrl") = Value
End Set

End Property

' Text
<Bindable(True), Category("Font"), DefaultValue(""),
Localizable(True)> Property Text() As String
Get
Dim pText As String = CStr(ViewState("Text"))
If pText Is Nothing Then
Return String.Empty
Else
Return pText
End If
End Get

Set(ByVal Value As String)
ViewState("Text") = Value
End Set

End Property

' -- [Functions] -------------------------------------------

' Render contents
Protected Overrides Sub RenderContents(ByVal output As
HtmlTextWriter)

End Sub

' Create Child Controls
Protected Overrides Sub CreateChildControls()

' Create child controls
Dim iIcon As New Image
Dim lText As New Label
Dim pMessage As New Panel
Dim pText As New Panel

' Define iIcon properties
With iIcon
.ImageUrl = Me.ImageUrl
.ID = "iIcon"
.Style.Add("float", "left")
End With

' Define lText properties
With lText
.ID = "lText"
.Text = Me.Text
End With

' Define pMessage properties
With pMessage
.ID = "pMessage"
.Width = Me.Width
End With

' Define pText properties
With pText
.ID = "pText"
.Style.Add("float", "left")
End With

' Add child controls
Me.Controls.Add(pMessage)
pMessage.Controls.Add(iIcon)
pMessage.Controls.Add(pText)
pText.Controls.Add(lText)

' Create child controls
MyBase.CreateChildControls()
Me.ChildControlsCreated = True

End Sub

End Class

End Namespace
 
M

Michael Hamrah

After a quick glance it looks like your RenderContents method is empty:

' Render contents
Protected Overrides Sub RenderContents(ByVal output As
HtmlTextWriter)

End Sub

You shouldn't override this if you're not doing anything, or call
base.RenderContents (that's the c# syntax, not sure about vb).
Internally RenderContents usually calls base.Render which actually does
the writing of HTML.

Michael Hamrah



Hi,

I created my first custom control.
I don't get any error when I use it but it doesn't show anything.
Could someone tell me if I am doing something wrong in my custom
control?
I am sure is something simple which I don't know.

Thanks,
Miguel

Here is my custom control code:

' -- [Import Namespaces] -------------------------------------------
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

' -- [Namespaces] -------------------------------------------

' Web
Namespace Web

' -- [Classes] -------------------------------------------
<DefaultProperty("Text"), ToolboxData("<{0}:Message
runat=server></{0}:Message>")> _
Public Class Message
Inherits WebControl

' -- [Properties] -------------------------------------------

' ImagePosition
<Bindable(True), Category("Layout"), DefaultValue(""),
Localizable(True)> Property ImagePosition() As String
Get
Dim pImagePosition As String = CStr(ViewState("ImagePosition"))
If pImagePosition Is Nothing Then
Return String.Empty
Else
Return pImagePosition
End If
End Get

Set(ByVal Value As String)
ViewState("ImagePosition") = Value
End Set

End Property

' ImageUrl
<Bindable(True), Category("Appearance"), DefaultValue(""),
Localizable(True)> Property ImageUrl() As String
Get
Dim pImageUrl As String = CStr(ViewState("ImageUrl"))
If pImageUrl Is Nothing Then
Return String.Empty
Else
Return pImageUrl
End If
End Get

Set(ByVal Value As String)
ViewState("ImageUrl") = Value
End Set

End Property

' Text
<Bindable(True), Category("Font"), DefaultValue(""),
Localizable(True)> Property Text() As String
Get
Dim pText As String = CStr(ViewState("Text"))
If pText Is Nothing Then
Return String.Empty
Else
Return pText
End If
End Get

Set(ByVal Value As String)
ViewState("Text") = Value
End Set

End Property

' -- [Functions] -------------------------------------------

' Render contents
Protected Overrides Sub RenderContents(ByVal output As
HtmlTextWriter)

End Sub

' Create Child Controls
Protected Overrides Sub CreateChildControls()

' Create child controls
Dim iIcon As New Image
Dim lText As New Label
Dim pMessage As New Panel
Dim pText As New Panel

' Define iIcon properties
With iIcon
.ImageUrl = Me.ImageUrl
.ID = "iIcon"
.Style.Add("float", "left")
End With

' Define lText properties
With lText
.ID = "lText"
.Text = Me.Text
End With

' Define pMessage properties
With pMessage
.ID = "pMessage"
.Width = Me.Width
End With

' Define pText properties
With pText
.ID = "pText"
.Style.Add("float", "left")
End With

' Add child controls
Me.Controls.Add(pMessage)
pMessage.Controls.Add(iIcon)
pMessage.Controls.Add(pText)
pText.Controls.Add(lText)

' Create child controls
MyBase.CreateChildControls()
Me.ChildControlsCreated = True

End Sub

End Class

End Namespace
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,152
Members
46,697
Latest member
AugustNabo

Latest Threads

Top