checkboxlist "AddAttributesToRender"

Discussion in 'ASP .Net Building Controls' started by TS, Feb 16, 2009.

  1. TS

    TS Guest

    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

    TS, Feb 16, 2009
    1. Advertisements

  2. When you did the override, did you include

    Nathan Sokalski, Feb 17, 2009
    1. Advertisements

  3. 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
    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.

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


    Vince Xu

    Microsoft Online Support


    Get notification to my posts through email? Please refer to

    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
    Vince Xu [MSFT], Feb 17, 2009
  4. TS

    TS Guest

    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?
    TS, Feb 19, 2009
  5. TS

    TS Guest

    yes, but since that event was never fired, that line of code was never
    TS, Feb 19, 2009
  6. 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

    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)

    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.
    Vince Xu [MSFT], Feb 20, 2009
  7. TS

    TS Guest

    sounds good, thanks
    TS, Feb 23, 2009
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.