Solved

Seemingly no rhyme or reason to event handler

Posted on 2008-10-21
7
231 Views
Last Modified: 2010-04-14
I have a link button that I am signing-up for (to respond to its click-event) in Page_Init:

protected void Page_Init( object sender, EventArgs e )
{
      this.ReturnLinkButton.Click += null;
      this.ReturnLinkButton.Click += new EventHandler(ReturnLink_Click);
}


Event Handler:
  protected void ReturnLink_Click(object sender, EventArgs e)
  {
    if (this.RemoveLastDisplayOverride(WorkflowSessionManager.CurrentContext.DisplayOverride))
      WorkflowSessionManager.CurrentContext.DisplayOverride = null;
  }


Sometimes when I click on the Link Button the event fires and the handler is entered.  Then I'll click it again and nothing happens.

What can I do to ensure that a click on the Link Button will always get handled?
0
Comment
Question by:Tom Knowlton
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
7 Comments
 
LVL 7

Accepted Solution

by:
the_bachelor earned 250 total points
ID: 22771573
this maybe a dumb question from me but are you adding the Linkbutton to the page dynamically?
If you aren't, how about a good old

    Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles LinkButton1.Click

    End Sub
0
 
LVL 5

Author Comment

by:Tom Knowlton
ID: 22771824
Sorry, this is in C#.

But as far as I know ...  I am doing what you suggest.
0
 
LVL 2

Assisted Solution

by:johnhumenik
johnhumenik earned 250 total points
ID: 22772177
What version of VS are you using?  In VS 2005/2008 the event handler declaration doesn't exist in C# code, but on the aspx page using the OnClick="<eventname>".
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 5

Author Comment

by:Tom Knowlton
ID: 22772195
I am in Visual Studio 2008.


I have tried it that way, also .... same thing.

For example, RIGHT NOW my markup looks like this:


 <asp:LinkButton ID="ReturnLinkButton" runat="server" onclick="ReturnLinkButton_Click" />


Code Behind looks like this:


  protected void ReturnLinkButton_Click( object sender, EventArgs e )
      {
            if (this.RemoveLastDisplayOverride(WorkflowSessionManager.CurrentContext.DisplayOverride))
                  WorkflowSessionManager.CurrentContext.DisplayOverride = null;
      }


And yet, when I first visit the page at runtime, the code execution does not stop at the breakpoint I have set on the first click.  But subsequent clicks DO stop.  Obviously that is not acceptable.
0
 
LVL 2

Expert Comment

by:johnhumenik
ID: 22772407
can you post your entire code behind or is it too long?
0
 
LVL 5

Author Comment

by:Tom Knowlton
ID: 22773285
One thing a co-worker and I discovered while debugging is that the naming for the LinkButton is changing between postbacks.  It is named one thing after the first postback and another after the next postback.  This would explain why the event is not firing consistently, for the event handler depends upon the name of the control.

First postback:

"ctl00$mainContent$ctl05$ReturnLinkButton"


Second postback:

"ctl00$mainContent$ctl01$ReturnLinkButton"


What we don't know is how to fix this.  Is there a way to force the naming for the control to remain consistent across postbacks?
0
 
LVL 5

Author Comment

by:Tom Knowlton
ID: 22791360
As it turns-out ... the problem WAS indeed with the naming of the control ID  (or better said, the total lack thereof).

Now I assign the ID in the parent control as the child control (the one that had the problem with the event handler) is added to the Controls collection:
 // Account Review
      if (c is UserControls_Workflow_Account)
      {
				((UserControls_Workflow_Account)c).ID = "AccountControl";
        ((UserControls_Workflow_Account)c).NavigateRequested += new CommandEventHandler(controlSearchResults_NavigateRequested);
        ((UserControls_Workflow_Account)c).UpdateAccount += new UpdateAccountEventHandler(controlAccount_UpdateAccount);
      }

Open in new window

0

Featured Post

[Webinar] How Hackers Steal Your Credentials

Do You Know How Hackers Steal Your Credentials? Join us and Skyport Systems to learn how hackers steal your credentials and why Active Directory must be secure to stop them. Thursday, July 13, 2017 10:00 A.M. PDT

Question has a verified solution.

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

I recently went through the process of creating a Calendar Control of events with the basis of using a database to keep track of the dates that are selectable, one requirement was to have the selected date pop-up in a simple lightbox.  At first this…
Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…

623 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