CreateChildControls Event before Click Event

Discussion in 'ASP .Net Building Controls' started by Mark Sisson, Jul 17, 2003.

  1. Mark Sisson

    Mark Sisson Guest

    Issue:
    I want to create a control that will accept a click event and then in
    response completely change it's look and feel. This could potentially
    mean a new completely new set of child controls than what the control
    had previously.

    Problem:
    The problem is that the click event holds the key in determining what
    the new layout will be but don't you have this info when you're in the
    CreateChildControls? This happens before the click event!

    Example:
    I'm working on a navigation control with "<< prev 1 2 3 next >>" look
    and feel. This example would have 7 LinkButtons. When the user
    presses the #2 link I want the control to get the event, shift it's
    numbering to "2 3 4", and potentially change the #2 LinkButton to a
    Label or perhaps radically change the look and feel.

    Questions:
    1. If I want the control to receive the click event do I have to
    create my controls in the CreateChildControls event? I've tried moving
    the entire control creation to the PreRender but then the wiring of
    EventHandlers doesn't work and my link clicks don't work.

    2. Should I build the entire raw HTML in the PreRender? Then would I
    hookup my own client-side script to post back? Doesn't this defeat all
    the magic of ASP.NET?

    3. Is there a way to "peak" at the object that caused the event to
    fire in the CreateChildControl event? In my example above, all I just
    need to know what LinkButton was pressed before I build things in
    CreateChildControls. My guess is no. you've probably got to
    completely reset the entire f***ing DOM in the Init just so ASP.NET
    can match the event with it's firing control. Then you complete scrap
    it and rebuild a new control. What a waste of CPU time!!!!

    FRUSTRATING!!! WHY IS THIS SO DAMN DIFFICULT!!!!!!!

    TIA for you help.
     
    Mark Sisson, Jul 17, 2003
    #1
    1. Advertising

  2. Hi Mark,

    You always create your child controls in CreateChildControls. What you have
    to do is to recreate your childs after the click event (ie.PreRender) so
    your CreateChildControls method gets a chance to run with the updated value
    and creates its childs accordingly. Note that you're not really wasting
    anything. CreateChildControls needs to run before the event firing logic in
    order to be able to reconstruct the previously control tree in order to been
    able to respond to events.

    --
    Victor Garcia Aprea
    Microsoft MVP | ASP.NET
    Looking for insights on ASP.NET? Read my blog:
    http://obies.com/vga/blog.aspx

    To contact me remove 'NOSPAM'. Please post all questions to the newsgroup

    and not by private mail.
    "Mark Sisson" <> wrote in message
    news:...
    > Issue:
    > I want to create a control that will accept a click event and then in
    > response completely change it's look and feel. This could potentially
    > mean a new completely new set of child controls than what the control
    > had previously.
    >
    > Problem:
    > The problem is that the click event holds the key in determining what
    > the new layout will be but don't you have this info when you're in the
    > CreateChildControls? This happens before the click event!
    >
    > Example:
    > I'm working on a navigation control with "<< prev 1 2 3 next >>" look
    > and feel. This example would have 7 LinkButtons. When the user
    > presses the #2 link I want the control to get the event, shift it's
    > numbering to "2 3 4", and potentially change the #2 LinkButton to a
    > Label or perhaps radically change the look and feel.
    >
    > Questions:
    > 1. If I want the control to receive the click event do I have to
    > create my controls in the CreateChildControls event? I've tried moving
    > the entire control creation to the PreRender but then the wiring of
    > EventHandlers doesn't work and my link clicks don't work.
    >
    > 2. Should I build the entire raw HTML in the PreRender? Then would I
    > hookup my own client-side script to post back? Doesn't this defeat all
    > the magic of ASP.NET?
    >
    > 3. Is there a way to "peak" at the object that caused the event to
    > fire in the CreateChildControl event? In my example above, all I just
    > need to know what LinkButton was pressed before I build things in
    > CreateChildControls. My guess is no. you've probably got to
    > completely reset the entire f***ing DOM in the Init just so ASP.NET
    > can match the event with it's firing control. Then you complete scrap
    > it and rebuild a new control. What a waste of CPU time!!!!
    >
    > FRUSTRATING!!! WHY IS THIS SO DAMN DIFFICULT!!!!!!!
    >
    > TIA for you help.
     
    Victor Garcia Aprea [MVP], Jul 17, 2003
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Purvi T
    Replies:
    0
    Views:
    879
    Purvi T
    Oct 19, 2004
  2. Lucas Tam
    Replies:
    1
    Views:
    745
    John Saunders
    Aug 17, 2003
  3. Arulraja
    Replies:
    3
    Views:
    1,390
    William F. Robertson, Jr.
    Oct 17, 2003
  4. Mark Sisson

    CreateChildControls Event before Click Event

    Mark Sisson, Jul 17, 2003, in forum: ASP .Net Web Controls
    Replies:
    1
    Views:
    204
    Victor Garcia Aprea [MVP]
    Jul 17, 2003
  5. createchildcontrols fires before click event

    , Jun 26, 2007, in forum: ASP .Net Web Controls
    Replies:
    1
    Views:
    205
    Tom John
    Jul 4, 2007
Loading...

Share This Page