Control, Web Control and Composite Control

Control, Web Control and Composite Control

am 19.12.2007 22:25:54 von Shapper

Hello,

I am working in a class library with various custom controls.

In which cases should a control inherit Control, WebControl and
CompositeControl classes?

And when should a custom control implement INamingContainer?

In this moment I am working on a custom control that is composed by a
TextBox, a Label, two Validator controls and a button.

I don't want it to render a tag around these controls. Should I, in
this case, inherit it from Composite Control? And do I need to
implement INamingContainer?

Thanks,

Miguel

Re: Control, Web Control and Composite Control

am 20.12.2007 13:39:11 von Kevin Spencer

System.Web.UI.Control is the base class for all ASP.Net Controls.
System.Web.UI.WebControls.WebControl inherits Control, and is the base class
for all ASP.Net WebControls. It contains a number of common properties and
methods that are used by all WebControls. You would inherit this class when
you want to employ some or all of those additional properties and methods.

System.Web.UI.WebControls.CompositeControl is the base class for all
WebControls that host other System.Web.UI.Controls. It is used when you want
to composite a number of Controls into a single Control. It is a container
which serves as the intermediary and coordinator of the Controls it
contains. It implements INamingContainer, which is an interface that ensures
that each Control has a unique ClientID, by combining their ID properties
with the INamingContainer Control in which they are hosted.

You probably want to create a CompositeControl. The following MSDN pages
should help with this:

http://msdn2.microsoft.com/en-us/library/zt27tfhy.aspx
http://msdn2.microsoft.com/en-us/library/3257x3ea.aspx

--
HTH,

Kevin Spencer
Chicken Salad Surgeon
Microsoft MVP

"shapper" wrote in message
news:0e1b1939-11fd-4cfc-8add-1dddd6fc03d6@f3g2000hsg.googleg roups.com...
> Hello,
>
> I am working in a class library with various custom controls.
>
> In which cases should a control inherit Control, WebControl and
> CompositeControl classes?
>
> And when should a custom control implement INamingContainer?
>
> In this moment I am working on a custom control that is composed by a
> TextBox, a Label, two Validator controls and a button.
>
> I don't want it to render a tag around these controls. Should I, in
> this case, inherit it from Composite Control? And do I need to
> implement INamingContainer?
>
> Thanks,
>
> Miguel

Re: Control, Web Control and Composite Control

am 20.12.2007 15:50:39 von Shapper

On Dec 20, 12:39 pm, "Kevin Spencer"
wrote:
> System.Web.UI.Control is the base class for all ASP.Net Controls.
> System.Web.UI.WebControls.WebControl inherits Control, and is the base class
> for all ASP.Net WebControls. It contains a number of common properties and
> methods that are used by all WebControls. You would inherit this class when
> you want to employ some or all of those additional properties and methods.
>
> System.Web.UI.WebControls.CompositeControl is the base class for all
> WebControls that host other System.Web.UI.Controls. It is used when you want
> to composite a number of Controls into a single Control. It is a container
> which serves as the intermediary and coordinator of the Controls it
> contains. It implements INamingContainer, which is an interface that ensures
> that each Control has a unique ClientID, by combining their ID properties
> with the INamingContainer Control in which they are hosted.
>
> You probably want to create a CompositeControl. The following MSDN pages
> should help with this:
>
> http://msdn2.microsoft.com/en-us/library/zt27tfhy.aspxhttp:/ /msdn2.microsoft.com/en-us/library/3257x3ea.aspx
>
> --
> HTH,
>
> Kevin Spencer
> Chicken Salad Surgeon
> Microsoft MVP
>
> "shapper" wrote in message
>
> news:0e1b1939-11fd-4cfc-8add-1dddd6fc03d6@f3g2000hsg.googleg roups.com...
>
> > Hello,
>
> > I am working in a class library with various custom controls.
>
> > In which cases should a control inherit Control, WebControl and
> > CompositeControl classes?
>
> > And when should a custom control implement INamingContainer?
>
> > In this moment I am working on a custom control that is composed by a
> > TextBox, a Label, two Validator controls and a button.
>
> > I don't want it to render a tag around these controls. Should I, in
> > this case, inherit it from Composite Control? And do I need to
> > implement INamingContainer?
>
> > Thanks,
>
> > Miguel

I am having a problem here with Composite Control. It "wrappes" the
controls in a Span Tag.
Sure I can override the BeginTag but what I would like would to not
render any tag at all.
Just renders the controls inside the custom control.

I was able to pull this by inheriting it from Control.
So I have a Custom control, inheriting Control and Implementing
INamingContainer, which contains various controls.
This way it renders all child controls but without any wrapper tag.
Is this ok?

Thanks,
Miguel

Re: Control, Web Control and Composite Control

am 20.12.2007 17:51:03 von brucebarker

sure, or if you want the composite control, just override RenderBeginTag and
RenderEndTag and make them nop's.

the main disadvantage of not using a span or div, is that the controls do
not have a common parent in the dom, so absolute postioning will not work
without client code to apply it to each element.

-- bruce (sqlwork.com)


"shapper" wrote:

> On Dec 20, 12:39 pm, "Kevin Spencer"
> wrote:
> > System.Web.UI.Control is the base class for all ASP.Net Controls.
> > System.Web.UI.WebControls.WebControl inherits Control, and is the base class
> > for all ASP.Net WebControls. It contains a number of common properties and
> > methods that are used by all WebControls. You would inherit this class when
> > you want to employ some or all of those additional properties and methods.
> >
> > System.Web.UI.WebControls.CompositeControl is the base class for all
> > WebControls that host other System.Web.UI.Controls. It is used when you want
> > to composite a number of Controls into a single Control. It is a container
> > which serves as the intermediary and coordinator of the Controls it
> > contains. It implements INamingContainer, which is an interface that ensures
> > that each Control has a unique ClientID, by combining their ID properties
> > with the INamingContainer Control in which they are hosted.
> >
> > You probably want to create a CompositeControl. The following MSDN pages
> > should help with this:
> >
> > http://msdn2.microsoft.com/en-us/library/zt27tfhy.aspxhttp:/ /msdn2.microsoft.com/en-us/library/3257x3ea.aspx
> >
> > --
> > HTH,
> >
> > Kevin Spencer
> > Chicken Salad Surgeon
> > Microsoft MVP
> >
> > "shapper" wrote in message
> >
> > news:0e1b1939-11fd-4cfc-8add-1dddd6fc03d6@f3g2000hsg.googleg roups.com...
> >
> > > Hello,
> >
> > > I am working in a class library with various custom controls.
> >
> > > In which cases should a control inherit Control, WebControl and
> > > CompositeControl classes?
> >
> > > And when should a custom control implement INamingContainer?
> >
> > > In this moment I am working on a custom control that is composed by a
> > > TextBox, a Label, two Validator controls and a button.
> >
> > > I don't want it to render a tag around these controls. Should I, in
> > > this case, inherit it from Composite Control? And do I need to
> > > implement INamingContainer?
> >
> > > Thanks,
> >
> > > Miguel
>
> I am having a problem here with Composite Control. It "wrappes" the
> controls in a Span Tag.
> Sure I can override the BeginTag but what I would like would to not
> render any tag at all.
> Just renders the controls inside the custom control.
>
> I was able to pull this by inheriting it from Control.
> So I have a Custom control, inheriting Control and Implementing
> INamingContainer, which contains various controls.
> This way it renders all child controls but without any wrapper tag.
> Is this ok?
>
> Thanks,
> Miguel
>

Re: Control, Web Control and Composite Control

am 21.12.2007 10:32:41 von peter.bucher

Hello

> sure, or if you want the composite control, just override RenderBeginTag
> and
> RenderEndTag and make them nop's.
Or simply overwrite the property "TagKey" and return the desired value.

--
Gruss, Peter Bucher
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
http://www.aspnetzone.de/blogs/peterbucher/ - Auf den Spuren von .NET

Re: Control, Web Control and Composite Control

am 21.12.2007 12:44:19 von Kevin Spencer

That sounds like an excellent solution.

--
HTH,

Kevin Spencer
Chicken Salad Surgeon
Microsoft MVP

"shapper" wrote in message
news:e12d72b3-09ac-4051-af5b-4fde4058654d@b1g2000pra.googleg roups.com...
> On Dec 20, 12:39 pm, "Kevin Spencer"
> wrote:
>> System.Web.UI.Control is the base class for all ASP.Net Controls.
>> System.Web.UI.WebControls.WebControl inherits Control, and is the base
>> class
>> for all ASP.Net WebControls. It contains a number of common properties
>> and
>> methods that are used by all WebControls. You would inherit this class
>> when
>> you want to employ some or all of those additional properties and
>> methods.
>>
>> System.Web.UI.WebControls.CompositeControl is the base class for all
>> WebControls that host other System.Web.UI.Controls. It is used when you
>> want
>> to composite a number of Controls into a single Control. It is a
>> container
>> which serves as the intermediary and coordinator of the Controls it
>> contains. It implements INamingContainer, which is an interface that
>> ensures
>> that each Control has a unique ClientID, by combining their ID properties
>> with the INamingContainer Control in which they are hosted.
>>
>> You probably want to create a CompositeControl. The following MSDN pages
>> should help with this:
>>
>> http://msdn2.microsoft.com/en-us/library/zt27tfhy.aspxhttp:/ /msdn2.microsoft.com/en-us/library/3257x3ea.aspx
>>
>> --
>> HTH,
>>
>> Kevin Spencer
>> Chicken Salad Surgeon
>> Microsoft MVP
>>
>> "shapper" wrote in message
>>
>> news:0e1b1939-11fd-4cfc-8add-1dddd6fc03d6@f3g2000hsg.googleg roups.com...
>>
>> > Hello,
>>
>> > I am working in a class library with various custom controls.
>>
>> > In which cases should a control inherit Control, WebControl and
>> > CompositeControl classes?
>>
>> > And when should a custom control implement INamingContainer?
>>
>> > In this moment I am working on a custom control that is composed by a
>> > TextBox, a Label, two Validator controls and a button.
>>
>> > I don't want it to render a tag around these controls. Should I, in
>> > this case, inherit it from Composite Control? And do I need to
>> > implement INamingContainer?
>>
>> > Thanks,
>>
>> > Miguel
>
> I am having a problem here with Composite Control. It "wrappes" the
> controls in a Span Tag.
> Sure I can override the BeginTag but what I would like would to not
> render any tag at all.
> Just renders the controls inside the custom control.
>
> I was able to pull this by inheriting it from Control.
> So I have a Custom control, inheriting Control and Implementing
> INamingContainer, which contains various controls.
> This way it renders all child controls but without any wrapper tag.
> Is this ok?
>
> Thanks,
> Miguel

Re: Control, Web Control and Composite Control

am 26.12.2007 15:49:27 von Shapper

On Dec 20, 4:51 pm, bruce barker
wrote:
> sure, or if you want the composite control, just override RenderBeginTag and
> RenderEndTag and make them nop's.
>
> the main disadvantage of not using a span or div, is that the controls do
> not have a common parent in the dom, so absolute postioning will not work
> without client code to apply it to each element.
>
> -- bruce (sqlwork.com)
>
> "shapper" wrote:
> > On Dec 20, 12:39 pm, "Kevin Spencer"
> > wrote:
> > > System.Web.UI.Control is the base class for all ASP.Net Controls.
> > > System.Web.UI.WebControls.WebControl inherits Control, and is the base class
> > > for all ASP.Net WebControls. It contains a number of common properties and
> > > methods that are used by all WebControls. You would inherit this class when
> > > you want to employ some or all of those additional properties and methods.
>
> > > System.Web.UI.WebControls.CompositeControl is the base class for all
> > > WebControls that host other System.Web.UI.Controls. It is used when you want
> > > to composite a number of Controls into a single Control. It is a container
> > > which serves as the intermediary and coordinator of the Controls it
> > > contains. It implements INamingContainer, which is an interface that ensures
> > > that each Control has a unique ClientID, by combining their ID properties
> > > with the INamingContainer Control in which they are hosted.
>
> > > You probably want to create a CompositeControl. The following MSDN pages
> > > should help with this:
>
> > >http://msdn2.microsoft.com/en-us/library/zt27tfhy.aspxhttp: //msdn2.mi...
>
> > > --
> > > HTH,
>
> > > Kevin Spencer
> > > Chicken Salad Surgeon
> > > Microsoft MVP
>
> > > "shapper" wrote in message
>
> > >news:0e1b1939-11fd-4cfc-8add-1dddd6fc03d6@f3g2000hsg.google groups.com...
>
> > > > Hello,
>
> > > > I am working in a class library with various custom controls.
>
> > > > In which cases should a control inherit Control, WebControl and
> > > > CompositeControl classes?
>
> > > > And when should a custom control implement INamingContainer?
>
> > > > In this moment I am working on a custom control that is composed by a
> > > > TextBox, a Label, two Validator controls and a button.
>
> > > > I don't want it to render a tag around these controls. Should I, in
> > > > this case, inherit it from Composite Control? And do I need to
> > > > implement INamingContainer?
>
> > > > Thanks,
>
> > > > Miguel
>
> > I am having a problem here with Composite Control. It "wrappes" the
> > controls in a Span Tag.
> > Sure I can override the BeginTag but what I would like would to not
> > render any tag at all.
> > Just renders the controls inside the custom control.
>
> > I was able to pull this by inheriting it from Control.
> > So I have a Custom control, inheriting Control and Implementing
> > INamingContainer, which contains various controls.
> > This way it renders all child controls but without any wrapper tag.
> > Is this ok?
>
> > Thanks,
> > Miguel

"sure, or if you want the composite control, just override
RenderBeginTag and
RenderEndTag and make them nop's. "

What do you mean with nop's? Can you give me a sample code?

Thanks,
Miguel