wrong event handler called

I place user controls B,C,D in user control A. I place A in some.aspx.

After I clicked B, C or D's event handler will not be called when clicked. If I click C or D after I click B, I'll just see the results I got from clicking B. However, if I click C or D then click X, it would work. In other words, the moment I click on B, every other event handler will not be reachable anymore.

How do I debug this? Where should I place the break points? Who calls the OnInit() in each user control? I want to know why when C or D is clicked, the B handler is called.

I see that something called OnInit() of BCD then OnInit() of A, onInit() of "some.aspx", then page_load in the oposite direction. However, I don't know how I can set the break point so that I can see why B handler is being called when not supposed to.

Thanks.
samliamAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

ptmcompCommented:
May be we can understand you better when you post some original code instead of talking about A, B, C, D, Y and Z. Often the problem is somewhere else where it's not expected.
0
samliamAuthor Commented:
Original code is too long to post here. So I'll post the user control that "dominates" the other user controls: (i.e., when this control is clicked, other controls are not reachable anymore. In other words, if I click the other controls, the program will call this controls handler!)

private void Page_Load(object sender, System.EventArgs e)
{
   if(!IsPostBack)
    {                  
        dropdown.DataSource=.....;
        dropdown.DataBind();
    }
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
    InitializeComponent();
    base.OnInit(e);
}
            
///  Required method for Designer support - do not modify
///  the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
    this.dropdown.SelectedIndexChanged += new   System.EventHandler(this.dropdown_SelectedIndexChanged);
    this.Load += new System.EventHandler(this.Page_Load);
}
#endregion

private void dropdown_SelectedIndexChanged(object sender, System.EventArgs e)
{
    String url=ConfigurationSettings.AppSettings["baseURL"];
    String maker=dropdown.SelectedItem.ToString();
    url+="some.aspx?dropdn=";
    url+=maker;
    Response.Redirect(url);                  
}
0
samliamAuthor Commented:
How would you set the break points?
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

ptmcompCommented:
I think the code here is fine. Did you name the control instances same as the CustomControl's name? Are these A, B, C and D from same type? I think to help you I would need the whole project.
0
samliamAuthor Commented:
Can you tell me first how you would debug this?
0
samliamAuthor Commented:
OK. Do you know the answer to the following problem?

I added a statement "Response.Write("Blah..");" and commented out later.

I do Build->Clean Solution, rebuild. I still see "Blah.."  I do not do any caching. Where is this "Blah.." from? How do I get rid of it?
0
samliamAuthor Commented:
The page must have been cached by the IE6 browser? I have the internet option -> check for new version of stored pages: "automatically". Doesn't this turn off caching?
0
samliamAuthor Commented:
I have simplified the problem as follows.

I create a userControl which contains a dropwdown list (set autoPostBack to 'true'). The event handler of the dropdown list has only 1 line:

Response.Redirect("http://site1");

I create another useControl containing a button. The event handler has this line:

Response.Redirect("http://site2");

I drag and drop the 2 user controls into a .aspx webform and run it. The button control is not reachable after I click the dropdown control. (in other words, after I go to site1, I cannot go to site2.)


0
ptmcompCommented:
Do both (site1.aspx and site2.aspx) have these user controls? I mean after you choose something from the dropdown your not anmyore on the same aspx, are you?
0
ptmcompCommented:
Place something like MyLabel.Text = "event 1 fired" instead of the redirect and check if it works.
0
samliamAuthor Commented:
It's simply:
Response.Redirect("http://www.yahoo.com");

I added a label and
label.Text="...";
same thing.
0
ptmcompCommented:
Open the page, save the html, press the button and save the html again and compare them (e.g. with SourceSafe)
0
samliamAuthor Commented:
The only differences is ViewState and the label text (from "Label"  to "Button Clicked!").
0
samliamAuthor Commented:
are you able to reproduce the problem with your VS.NET?
0
mmarinovCommented:
samliam,

as you ask me - this is not an .net bug :-(
the problem is that every time the page is submit ( ispostback = true ) asp_net initialize every user control on your page.

You can set some conditions by which the asp_net will execute the code in page_load or not

If you want to debug the project by adding break point - just add them at the beginning of every page_load of user controls and see why after clicking B nothing else is working

B..G
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C#

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.