User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the C# section within the Software Development category of DaniWeb, a massive community of 423,637 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 3,197 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C# advertiser: Programming Forums
Views: 7845 | Replies: 5
Reply
Join Date: Nov 2005
Location: South Africa
Posts: 24
Reputation: vangraan is an unknown quantity at this point 
Rep Power: 3
Solved Threads: 0
vangraan vangraan is offline Offline
Newbie Poster

Button click event only working the second time

  #1  
Dec 7th, 2005
I dynamically create some linkbuttons and assign them the same EventHandler:

lb.Click  += new System.EventHandler(engCat_Clicked);

In the engCat_Click event, it sets a static variable to the value of the LinkButton's ID that was clicked:

protected void engCat_Clicked(Object sender, EventArgs e) 
{
	LinkButton lb = (LinkButton)sender;
	string engcatID = lb.ID;
	currentEngCatID = engcatID;
}


The problem is that this variable is only set the second time I click on the button. It seems the EventHandler method is only called the second time the event happens.

Has anyone encountered this kind of problem before, or know what might be the cause?
Thanks!
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Jul 2005
Location: Dallas, TX
Posts: 481
Reputation: campkev is an unknown quantity at this point 
Rep Power: 4
Solved Threads: 19
campkev campkev is offline Offline
Posting Pro in Training

Re: Button click event only working the second time

  #2  
Dec 8th, 2005
where is this ("lb.Click += new System.EventHandler(engCat_Clicked);") piece of code located?

without seeing all of the code, i would hazard a guess that it is inside an
if(Postback){
}
section
Reply With Quote  
Join Date: Nov 2005
Location: South Africa
Posts: 24
Reputation: vangraan is an unknown quantity at this point 
Rep Power: 3
Solved Threads: 0
vangraan vangraan is offline Offline
Newbie Poster

Re: Button click event only working the second time

  #3  
Dec 8th, 2005
No it's not in if (Postback), it is just plain in the Page_Load. I have tried adding it in the PageInit as well (another forum suggested this) but no difference. I think it definately has something to do with creating the buttons dynamically, but it's the only way to solve my problem.

I will try pasting some more of my code to make it clearer..

Maybe I should just fire the button event automatically when the page is busy loading? I have run out of ideas...
Reply With Quote  
Join Date: Dec 2004
Posts: 1,590
Reputation: tgreer is an unknown quantity at this point 
Rep Power: 7
Solved Threads: 35
Colleague
tgreer tgreer is offline Offline
Made Her Cry

Re: Button click event only working the second time

  #4  
Dec 8th, 2005
Sounds like an ASP.NET application? If so, and if you're working with dynamically-created controls, then you're very likely running afoul of the ASP.NET Page LifeCycle.

This article deals very specifically with that issue:

ASP.NET Page Life Cycle and Dynamic Controls
Reply With Quote  
Join Date: Feb 2007
Posts: 1
Reputation: dogTate is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
dogTate's Avatar
dogTate dogTate is offline Offline
Newbie Poster

Re: Button click event only working the second time

  #5  
Feb 12th, 2007
I know this is an old post, but I recently ran into a similar problem involving a linkbutton contained within a dynamically loaded user control inconsistently requiring two clicks in order to reach its Click handler method. Most of the posts I found kept referring people to the page lifecycle, but in the end that had nothing to do with it. The issue was that the controls ID values were being assigned automatically by .NET so they were {ctl001, ctl002, ctl003...} etc. Because the page allowed users to add or remove sections by clicking on linkbuttons, these ID values were capable of changing between page loads. This would cause the dynamically loaded controls to receive different IDs than they had on the previous page load and would result in a screwed up viewstate. .NET could not identify which control went with which viewstate/handler. After I adopted a less dynamic naming method, based on a root string prefix and a numeric suffix based on a database primary key, the issue was resolved. Because my controls were loaded in a pretty deep nest, there was more than one place where a dynamically generated ID could be introducing this problem. So I would reccomend to anybody dealing with this issue, view source in your browser and look at the IDs assigned to your controls. If there are a lot of ctl002, ctl003, ctl004 type of control IDs in your html try to eliminate those by assigning more explicit and static names that will not be affected by the addition or removal of other controls on the page.
Reply With Quote  
Join Date: Jul 2008
Posts: 1
Reputation: kdelta is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
kdelta kdelta is offline Offline
Newbie Poster

Re: Button click event only working the second time

  #6  
Jul 9th, 2008
Thank you dogTate, I had the same problem.
It actually wasn't the first time I got screwed by forgetting to give IDs to controls.
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

DaniWeb C# Marketplace
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes

Similar Threads
Other Threads in the C# Forum

All times are GMT -4. The time now is 10:07 pm.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC