how to fire an event programmatically?

Discussion in 'ASP .Net' started by Verde, Sep 15, 2005.

  1. Verde

    Verde Guest

    This is admittedly an apparently odd request... but please indulge me if you
    don't mind:

    Suppose I have two <asp:Button.../> on a page (Button1 and Button2). User
    clicks Button1 and triggers a PostBack. How can I then fire the click event
    of Button2 during the same PostBack?

    I know this seems like a totally bad situation I'm creating out of naiveity.
    But please indulge. It would save me from having to provide a lengthy
    explanation for why I'm interested in doing this.

    Please note - I want to *actually fire* the click event of Button2. It's
    not enough to simply run code in some independent method that could get
    called from either button's click event procedure.

    Thanks!
    Verde, Sep 15, 2005
    #1
    1. Advertising

  2. Verde

    Guest

    just call the vent of button 2


    button1_event(e,e)
    {
    bla bla
    button2_event(null,null)
    }
    , Sep 15, 2005
    #2
    1. Advertising

  3. Button1 triggers a postback. This means the server is busy processing the
    postback. Now you want to fire another click event. But it is the client who
    fires onclick events. This means you need another postback to communicate
    the second onclick to the server. Is this what you mean by *actually fire*
    the click event of Button2? Or you want to fake another onclick on the
    server side?

    Eliyahu

    "Verde" <> wrote in message
    news:...
    > This is admittedly an apparently odd request... but please indulge me if

    you
    > don't mind:
    >
    > Suppose I have two <asp:Button.../> on a page (Button1 and Button2). User
    > clicks Button1 and triggers a PostBack. How can I then fire the click

    event
    > of Button2 during the same PostBack?
    >
    > I know this seems like a totally bad situation I'm creating out of

    naiveity.
    > But please indulge. It would save me from having to provide a lengthy
    > explanation for why I'm interested in doing this.
    >
    > Please note - I want to *actually fire* the click event of Button2. It's
    > not enough to simply run code in some independent method that could get
    > called from either button's click event procedure.
    >
    > Thanks!
    >
    >
    Eliyahu Goldin, Sep 15, 2005
    #3
  4. Verde

    Hans Kesting Guest

    Verde wrote:
    > This is admittedly an apparently odd request... but please indulge me
    > if you don't mind:
    >
    > Suppose I have two <asp:Button.../> on a page (Button1 and Button2).
    > User clicks Button1 and triggers a PostBack. How can I then fire the
    > click event of Button2 during the same PostBack?
    >
    > I know this seems like a totally bad situation I'm creating out of
    > naiveity. But please indulge. It would save me from having to provide
    > a lengthy explanation for why I'm interested in doing this.
    >
    > Please note - I want to *actually fire* the click event of Button2. It's not enough to simply run code in some independent method
    > that
    > could get called from either button's click event procedure.
    >
    > Thanks!


    What do you think is the difference between "actually fire" the click
    event and call a method?

    For C# code is generated like: Button1.Click += new ClickEventHandler(...)
    You could try and add the handler for the Button2.Click also to Button1.Click
    (so Button1.Click has two handlers and the Button2 handler is called by both clicks)
    Do this in the Page_Load so you don't need to alter the generated code.

    Hans Kesting
    Hans Kesting, Sep 15, 2005
    #4
  5. Verde

    Verde Guest

    The short answer, as I eventually figured out is this:
    tmpMyButton.RaisePostBackEvent("click");

    FWIW: The reason I need to do this is that I'm using a 3rd party component
    that implements its own .Click event that is NOT cancellable. Additionally,
    this component does not trigger client-side control validation. My solution
    is to implement a plain old <asp:ImageButton> to trigger the postback
    (rather than using the 3rd party component). This gets the validation to
    happen. On the server I then handle the ImageButton's click event. During
    that event procedure I do more sophisticated validation and ensure that all
    data required for the 3rd Party component is present. If it is, I then
    programmatically instantiate the 3rd party component and fire its click
    event procedure. Remember it's not cancellable - so rather than getting into
    it and wishing I could cancel it if runtime conditions aren't right, I
    verify the runtime conditions (in the asp:ImageButton's click event
    procedrue) before even firing the 3rd party component's click event; thereby
    having the same effect as cancelling it. Now, you're probably thinking this
    is all fine and well but that I still don't have to fire the event (via
    tmpMyButton.RaisePostBackEvent("click");) and could instead call another
    method. Not true -- because the 3rd party component *always* does something
    internally (i.e., I don't know how it does it) as part of its click event
    procedure *after* all of my code in its [click event procedure] has run: It
    POSTs data to the vendor's Web site and redirects my user to their site. If
    I don't want my user to go to the vendor's site under some runtime
    conditions, then I'd have to cancel the click event. But because I can't
    cancel it I have to make sure it never gets fired under those conditions.
    But when conditions are right I do need to ensure that my users and data get
    transferred - and because the component does that as part of it's click
    event I need to fire that click event (running my own code doesn't get the
    user to the 3rd Party site). So, at the end of the day I get (1) client side
    validation and (2) the functional equivalent of a cancellable event and (3)
    leverage a 3rd party component's existing functionality to transfer
    user+data -- when the component does not support the first two of these
    things.

    -V



    "Hans Kesting" <> wrote in message
    news:...
    > Verde wrote:
    >> This is admittedly an apparently odd request... but please indulge me
    >> if you don't mind:
    >>
    >> Suppose I have two <asp:Button.../> on a page (Button1 and Button2).
    >> User clicks Button1 and triggers a PostBack. How can I then fire the
    >> click event of Button2 during the same PostBack?
    >>
    >> I know this seems like a totally bad situation I'm creating out of
    >> naiveity. But please indulge. It would save me from having to provide
    >> a lengthy explanation for why I'm interested in doing this.
    >>
    >> Please note - I want to *actually fire* the click event of Button2. It's
    >> not enough to simply run code in some independent method that
    >> could get called from either button's click event procedure.
    >>
    >> Thanks!

    >
    > What do you think is the difference between "actually fire" the click
    > event and call a method?
    >
    > For C# code is generated like: Button1.Click += new ClickEventHandler(...)
    > You could try and add the handler for the Button2.Click also to
    > Button1.Click
    > (so Button1.Click has two handlers and the Button2 handler is called by
    > both clicks)
    > Do this in the Page_Load so you don't need to alter the generated code.
    >
    > Hans Kesting
    >
    >
    Verde, Sep 15, 2005
    #5
  6. Verde

    Verde Guest

    I want to fake another .Click on the server side.
    But I figured it out... see my response to Hans.

    Thanks for your interest!




    "Eliyahu Goldin" <> wrote in message
    news:%...
    > Button1 triggers a postback. This means the server is busy processing the
    > postback. Now you want to fire another click event. But it is the client
    > who
    > fires onclick events. This means you need another postback to communicate
    > the second onclick to the server. Is this what you mean by *actually fire*
    > the click event of Button2? Or you want to fake another onclick on the
    > server side?
    >
    > Eliyahu
    >
    > "Verde" <> wrote in message
    > news:...
    >> This is admittedly an apparently odd request... but please indulge me if

    > you
    >> don't mind:
    >>
    >> Suppose I have two <asp:Button.../> on a page (Button1 and Button2). User
    >> clicks Button1 and triggers a PostBack. How can I then fire the click

    > event
    >> of Button2 during the same PostBack?
    >>
    >> I know this seems like a totally bad situation I'm creating out of

    > naiveity.
    >> But please indulge. It would save me from having to provide a lengthy
    >> explanation for why I'm interested in doing this.
    >>
    >> Please note - I want to *actually fire* the click event of Button2. It's
    >> not enough to simply run code in some independent method that could get
    >> called from either button's click event procedure.
    >>
    >> Thanks!
    >>
    >>

    >
    >
    Verde, Sep 15, 2005
    #6
    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. Carlo Marchesoni

    fire button event programmatically

    Carlo Marchesoni, Jul 29, 2003, in forum: ASP .Net
    Replies:
    5
    Views:
    696
    Lewis Wang [MSFT]
    Jul 31, 2003
  2. Francesco M.
    Replies:
    2
    Views:
    16,538
    Thomas Weidenfeller
    Feb 10, 2005
  3. Replies:
    16
    Views:
    607
    Jarek Zgoda
    Aug 1, 2005
  4. Replies:
    4
    Views:
    519
  5. Robbie
    Replies:
    2
    Views:
    150
    Robbie
    Jul 16, 2004
Loading...

Share This Page