Seemingly no rhyme or reason to event handler

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?
LVL 5
Tom KnowltonWeb developerAsked:
Who is Participating?
 
the_bachelorConnect With a Mentor Commented:
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
 
Tom KnowltonWeb developerAuthor Commented:
Sorry, this is in C#.

But as far as I know ...  I am doing what you suggest.
0
 
johnhumenikConnect With a Mentor Commented:
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
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
Tom KnowltonWeb developerAuthor Commented:
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
 
johnhumenikCommented:
can you post your entire code behind or is it too long?
0
 
Tom KnowltonWeb developerAuthor Commented:
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
 
Tom KnowltonWeb developerAuthor Commented:
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
All Courses

From novice to tech pro — start learning today.