Tutorial :Handle Click Event for LinkButton in User Control from Parent ASP.NET page



Question:

I have a LinkButton within a User Control and it has handled with:

Private Sub LoginLinkLinkButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LoginLinkLinkButton.Click          Response.Redirect("/", True)  End Sub  

On certain ASPX pages I would like to handle the click from the page's code behind, opposed to within the user control. How do I override the handle within the control from the parent's code behind page?

Update: Based on the answer, I have the updated the User Control:

Public Event LoginLinkClicked As OnLoginClickHandler  Public Delegate Sub OnLoginClickHandler(ByVal sender As Object, ByVal e As EventArgs)    [...]    Private Sub LoginLinkLinkButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LoginLinkLinkButton.Click          **If OnLoginClickHandler IsNot Nothing Then**              RaiseEvent LoginLinkClicked(Me, e)          Else              Response.Redirect("/", True)          End If  End Sub  

The problem is determining the correct syntax for the if line because the above is invalid.


Solution:1

You'll have to expose a new event from the user control. Apologies as the following code is all in C# and it's been a long time since I touched VB.Net, but you should get the idea:

You can use a delegate event by adding the following to your UserControl:

public event OnLoginClickHandler LoginClick;  public delegate void OnLoginClickHandler (object sender, EventArgs e);  

Then call the following to your LinkButton Click event:

protected void LoginLinkLinkButton_Click(object sender, EventArgs e)  {      // Only fire the event if there's a subscriber      if (OnLoginClickHandler != null)       {          OnLoginClickHandler(sender, e);       }      else      {          // Not handled, so perform the standard redirect          Response.Redirect("/", true);      }  }  

You can then just hook up into this within your aspx markup:

<asp:LinkButton runat="server" ID="Foo" OnLoginClick="Foo_LoginClick" />  

And your server side event handler on your Page will be as follows:

protected void Foo_LoginClick_Click(object sender, EventArgs e)  {      // This event was fired from the UserControl  }  

UPDATE

I think this is how you translate the event subscription check to VB.Net:

If LoginClick IsNot Nothing Then      RaiseEvent LoginClick(sender, e)   End If   


Solution:2

I think you should have a look into below code and links.

Parent Page aspx.cs part    public partial class getproductdetails : System.Web.UI.Page  {   protected void Page_Load(object sender, EventArgs e)   {    Button btnYes = (Button)ucPrompt.FindControl("btnYes");    btnYes.Click += new EventHandler(ucPrompt_btnYes_Click);   }     void ucPrompt_btnYes_Click(object sender, EventArgs e)    {      //Do Work    }  }  

Read more details how it works (Reference) :-

Handle events of usercontrol in parent page in asp.net

Calling a method of parent page from user control


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »