how to fire an event programmatically?

V

Verde

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!
 
Z

zzzxtreme

just call the vent of button 2


button1_event(e,e)
{
bla bla
button2_event(null,null)
}
 
E

Eliyahu Goldin

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
 
H

Hans Kesting

Verde said:
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
 
V

Verde

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
 
V

Verde

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

Thanks for your interest!
 

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

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,053
Latest member
BrodieSola

Latest Threads

Top