Id and CssClass not defined

S

shapper

Hello,

I created a custom control that inherits CompositeControl:

Public Class MySection
Inherits CompositeControl
...
Protected Overrides Sub CreateChildControls()
...
MyBase.CreateChildControls()
Me.ChildControlsCreated = True
End Sub

End Class MySection

When I use this control I define its ID and CssClass.
However, when I check the rendered output the ID and CssClass are not
defined.
What am I doing wrong?

Shoudn't this be working, since I am inheriting my control from
CompositeControl?

Thanks,
Miguel
 
M

Milosz Skalecki [MCAD]

Hi Shapper,

HTML output should be rendered as <span id="yourId"
class="yourclass"></span>. In addition, there's no need for setting
ChildControlsCreated to true because EnsureChildControls method does it for
you.
I'm guessing something else is causing problem, paste all the code.
 
S

shapper

Hi Shapper,

HTML output should be rendered as <span id="yourId"
class="yourclass"></span>. In addition, there's no need for setting
ChildControlsCreated to true because EnsureChildControls method does it for
you.
I'm guessing something else is causing problem, paste all the code.

Hi,

I think I found the problem. In my custom control I also have the
following:

Public Overloads Overrides Sub RenderBeginTag(ByVal writer As
HtmlTextWriter)
writer.RenderBeginTag(HtmlTextWriterTag.Div)
End Sub ' RenderBeginTag
Public Overloads Overrides Sub RenderEndTag(ByVal writer As
HtmlTextWriter)
writer.RenderEndTag()
End Sub ' RenderEndTag

I changed it to:

Public Overloads Overrides Sub RenderBeginTag(ByVal writer As
HtmlTextWriter)

With writer
If Me.ID <> Nothing
Then .AddAttribute(HtmlTextWriterAttribute.Id, Me.ID)
If Me.CssClass <> Nothing
Then .AddAttribute(HtmlTextWriterAttribute.Class, Me.CssClass)
End With
With writer
If Me.Width <> Nothing
Then .AddAttribute(HtmlTextWriterAttribute.Style, "width: " &
Me.Width.ToString)
End With

' Render begin tag
writer.RenderBeginTag(HtmlTextWriterTag.Div)

End Sub ' RenderBeginTag

Now it is working.

Am I doing this right? Do I really need to do this?

Thanks,
Miguel
 
M

Milosz Skalecki [MCAD]

You don't need to bacause cssclass and id are rendered automatically. In
order to change default span tag to div, override TagKey property:

protected readonly overrides property TagKey() as HtmlTextWriterTag
get
return HtmlTextWriterTag.Div
end get
end property

hope this helps
 

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

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top