[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

microsoft.public.dotnet.framework.aspnet.buildingcontrols

checkboxlist "AddAttributesToRender"

TS

2/16/2009 9:05:00 PM

when i override this in my custom checkboxlist, the event is never called.
what am i doing wrong?

I want to add some attributes to get rendered to the <table> element. I did
do a workaround to just add these attributes in Onprerender, but thought
correct way was to override addattributestoRender

thanks


6 Answers

Nathan Sokalski

2/17/2009 3:28:00 AM

0

When you did the override, did you include

MyBase.AddAttributesToRender
--
Nathan Sokalski
njsokalski@hotmail.com
http://www.nathansok...

"TS" <manofsteele1@nospam.nospam> wrote in message
news:%23f4PKpHkJHA.500@TK2MSFTNGP06.phx.gbl...
> when i override this in my custom checkboxlist, the event is never called.
> what am i doing wrong?
>
> I want to add some attributes to get rendered to the <table> element. I
> did do a workaround to just add these attributes in Onprerender, but
> thought correct way was to override addattributestoRender
>
> thanks
>
>


v-vincex

2/17/2009 5:31:00 AM

0

Hello TS,

Based on my understanding, you built a custom control which inherits from
CheckBoxList. You added some attributes and client events in
AddAttributesToRender method. But the related attributes and events can't
be rendered out. If I have misunderstood you, please feel free to let me
know.
As far as I know, this is a known issue. The issue that caused this
oversight is in that the CheckBoxList renders both a table tag and mutiple
input tags. It is ambiguous as to which tag should receive the attributes
added in AddAttributesToRender method. Fixing this issue would involve a
major design decision (potentially adding some object to allow the addition
of attributes to inner tags) and a large amount of code, so it is not
fixable at this point.

Resolution:
To work around this problem, you can add the attribute to the CheckBoxList
via the Attributes collection in the PreRender phase. An alternative
workaround
would be to write an entirely new CheckBoxList control (deriving from
ListControl) that performs the additional functionality needed.



Sincerely,

Vince Xu

Microsoft Online Support

£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½

Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#not....

MSDN Managed Newsgroup support offering is for non-urgent issues where an
initial response from the community or a Microsoft Support Engineer within
2 business day is acceptable. Please note that each follow up response may
take approximately 2 business days as the support professional working with
you may need further investigation to reach the most efficient resolution.
The offering is not appropriate for situations that require urgent,
real-time or phone-based interactions. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/en-us/subscriptions/aa9...

TS

2/19/2009 4:29:00 PM

0

thanks, but actually I never got to the point where the attributes were
added because that overriden event was never fired. I could put a breakpoint
inside my overriden AddAttributesToRender method but it would never be hit.
Is there a reson why this event was not called?

"Vince Xu [MSFT]" <v-vincex@online.microsoft.com> wrote in message
news:mCYetDMkJHA.6072@TK2MSFTNGHUB02.phx.gbl...
> Hello TS,
>
> Based on my understanding, you built a custom control which inherits from
> CheckBoxList. You added some attributes and client events in
> AddAttributesToRender method. But the related attributes and events can't
> be rendered out. If I have misunderstood you, please feel free to let me
> know.
> As far as I know, this is a known issue. The issue that caused this
> oversight is in that the CheckBoxList renders both a table tag and mutiple
> input tags. It is ambiguous as to which tag should receive the attributes
> added in AddAttributesToRender method. Fixing this issue would involve a
> major design decision (potentially adding some object to allow the
> addition
> of attributes to inner tags) and a large amount of code, so it is not
> fixable at this point.
>
> Resolution:
> To work around this problem, you can add the attribute to the CheckBoxList
> via the Attributes collection in the PreRender phase. An alternative
> workaround
> would be to write an entirely new CheckBoxList control (deriving from
> ListControl) that performs the additional functionality needed.
>
>
>
> Sincerely,
>
> Vince Xu
>
> Microsoft Online Support
>
> £½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½
>
> Get notification to my posts through email? Please refer to
> http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#not....
>
> MSDN Managed Newsgroup support offering is for non-urgent issues where an
> initial response from the community or a Microsoft Support Engineer within
> 2 business day is acceptable. Please note that each follow up response may
> take approximately 2 business days as the support professional working
> with
> you may need further investigation to reach the most efficient resolution.
> The offering is not appropriate for situations that require urgent,
> real-time or phone-based interactions. Issues of this nature are best
> handled working with a dedicated Microsoft Support Engineer by contacting
> Microsoft Customer Support Services (CSS) at
> http://msdn.microsoft.com/en-us/subscriptions/aa9...
>


TS

2/19/2009 4:30:00 PM

0

yes, but since that event was never fired, that line of code was never
executed.

"Nathan Sokalski" <njsokalski@hotmail.com> wrote in message
news:eRYKw%23KkJHA.4760@TK2MSFTNGP04.phx.gbl...
> When you did the override, did you include
>
> MyBase.AddAttributesToRender
> --
> Nathan Sokalski
> njsokalski@hotmail.com
> http://www.nathansok...
>
> "TS" <manofsteele1@nospam.nospam> wrote in message
> news:%23f4PKpHkJHA.500@TK2MSFTNGP06.phx.gbl...
>> when i override this in my custom checkboxlist, the event is never
>> called. what am i doing wrong?
>>
>> I want to add some attributes to get rendered to the <table> element. I
>> did do a workaround to just add these attributes in Onprerender, but
>> thought correct way was to override addattributestoRender
>>
>> thanks
>>
>>
>
>


v-vincex

2/20/2009 5:21:00 AM

0

Hello TS,

Sorry for my misunderstanding in my previous post. I reproduced this
scenario and do more research about it. At last, I found some clues about
it.

All web controls derive from WebControl class. In WebControl, it builds
AddAttributesToRender method and defines Render method to be inherited by
other child classes.
In Render method of WebControl, it will call RenderBeginTag, RenderContents
and RenderEndTag methods.
protected internal override void Render(HtmlTextWriter writer)
{
this.RenderBeginTag(writer);
this.RenderContents(writer);
this.RenderEndTag(writer);
}

In RenderBeginTag method, it will call AddAttributesToRender method which
is defined in WebControl.
But in CheckBoxList and RadioButtonList, render method is rewritten at all
without touching RenderBeginTag method and AddAttributesToRender method.
Hence, AddAttributesToRender as well as other methods which are called in
Render method of WebCotnrol(contains RenderBeginTag , RenderContents and
RenderEndTag methods) will not be triggered.

For OnPreRender method, it will be fired before Render method, so it is
still available.

CheckBoxList will render a table with several items inside that is
something like a composite control. By design, we needn't to define any
attributes or styles for the entire object so that it can be like a
collection of multiple CheckBox controls. With the table element
participating, there are no BeginTag and EndTag needs to render. However,
there is an additional method "RenderItem" that we can make use of to do
something on the present item. Besides this, we can also use OnPreRender
to add attributes on it.

If it's inappropriate to use OnPreRender in your case, please let me know.
I will be happily work with you on further questions.

TS

2/23/2009 8:42:00 PM

0

sounds good, thanks

"Vince Xu [MSFT]" <v-vincex@online.microsoft.com> wrote in message
news:tk8IPsxkJHA.4176@TK2MSFTNGHUB02.phx.gbl...
> Hello TS,
>
> Sorry for my misunderstanding in my previous post. I reproduced this
> scenario and do more research about it. At last, I found some clues about
> it.
>
> All web controls derive from WebControl class. In WebControl, it builds
> AddAttributesToRender method and defines Render method to be inherited by
> other child classes.
> In Render method of WebControl, it will call RenderBeginTag,
> RenderContents
> and RenderEndTag methods.
> protected internal override void Render(HtmlTextWriter writer)
> {
> this.RenderBeginTag(writer);
> this.RenderContents(writer);
> this.RenderEndTag(writer);
> }
>
> In RenderBeginTag method, it will call AddAttributesToRender method which
> is defined in WebControl.
> But in CheckBoxList and RadioButtonList, render method is rewritten at all
> without touching RenderBeginTag method and AddAttributesToRender method.
> Hence, AddAttributesToRender as well as other methods which are called in
> Render method of WebCotnrol(contains RenderBeginTag , RenderContents and
> RenderEndTag methods) will not be triggered.
>
> For OnPreRender method, it will be fired before Render method, so it is
> still available.
>
> CheckBoxList will render a table with several items inside that is
> something like a composite control. By design, we needn't to define any
> attributes or styles for the entire object so that it can be like a
> collection of multiple CheckBox controls. With the table element
> participating, there are no BeginTag and EndTag needs to render. However,
> there is an additional method "RenderItem" that we can make use of to do
> something on the present item. Besides this, we can also use OnPreRender
> to add attributes on it.
>
> If it's inappropriate to use OnPreRender in your case, please let me know.
> I will be happily work with you on further questions.
>