Solved

In ASP.NET2, How do I capture a button click event of the parent page which contains my user control.

Posted on 2011-02-21
8
304 Views
Last Modified: 2012-06-27
Hi,

I have an ASP.NET2 page which contains a user control. This container page has some generic buttons on it like "Next", "Previous" etc. How do I capture when these parent buttons have been clicked in my User Control Code Behind. I need to do this since I need to invoke some final processing before the User Control disappears to be replaced by another.

A code example would be really handy.

Thanks,

Sam
0
Comment
Question by:SamJolly
  • 4
  • 3
8 Comments
 
LVL 9

Accepted Solution

by:
xav056 earned 450 total points
ID: 34948192
in the page_init
try this
Request.Form["__EVENTTARGET"]  that should give you the id of the control that caused the postbac if it is anajax control
alternatively if it is a regular asp button you do
Request.Form["TheIDOfYourButton"]  is that is not null it means that control caused the postback
0
 

Author Comment

by:SamJolly
ID: 34948256
I assume you are talking about the page_init in the container page. I would really like capture the event in the user control preferable using the "Handles" feature so that I can link an event handler in my User Control to the event that happened in the parent.

The parent event looks like this:

    Protected Sub btnPrev_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrev.Click

In the User Control code I would like to get some code to run then have this parent code run as normal.
Something like this in the User Control:

Protected Sub btnPrev_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Parent.btnPrev.Click
..... Do UserControl Final Save code
 ....Now run normal Parent.btnPrev.Click code.

Thoughts???

Thanks,

Sam


0
 
LVL 9

Expert Comment

by:xav056
ID: 34948461
yes,
how about you expose a public methods that you can  call from the page_init
0
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 
LVL 20

Assisted Solution

by:informaniac
informaniac earned 50 total points
ID: 34949013
Did u take a look @delegates. I'm not sure of this, coz the other way arnd works using delegates.
0
 

Author Comment

by:SamJolly
ID: 34950314
Thanks all for comments.

I have just tried using the Page_Init method, in the user control, with the following code:

 Dim ctrlname As String = Page.Request.Params.Get("__EVENTTARGET")

However "ctrlName" always returns "" when I click on the Parent's buttons.

Thoughts?

0
 

Author Comment

by:SamJolly
ID: 34950409
OK, I have managed to get something to work:

        ctrlname = Request.Form("ctl00$MainPanelContent$btnNext")

This checks the "name" attribute which returns "Next" if clicked and therefore I could use this. However it does not seem to be a very ASP.NET way of doing things. I would love to know the correct ASP.NET way of doing this. I still think there must be a correct way of trapping Parent Page events, ie parent.btnNext.clicked,  within the User Control. So what is the recommended way to do this?

Thanks,

Sam
0
 
LVL 9

Expert Comment

by:xav056
ID: 34950959
I think the control  btnNext.ClientId will return ctl00$MainPanelContent$btnNext
0
 

Author Closing Comment

by:SamJolly
ID: 35076092
thks. Apologies for the delay in closing
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

829 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question