[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

shapper

10/10/2006 10:26:00 PM

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

1 Answer

Michael Hamrah

10/10/2006 10:43:00 PM

0

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



On Oct 10, 6:25 pm, "shapper" <mdmo...@gmail.com> wrote:
> 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