I am trying to bind a click event to a button within a usercontrol at runtime. The code I have written works form a plan old webform but the event is just not binding with in the control.
Here's my code. First the page:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="myApp._Default" %>
<%@ Register TagPrefix="uc" TagName="UserControl" Src="~/UserControlWithButton.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" />
<uc:UserControl ID="userControl" runat="server" />
</div>
</form>
</body>
</html>
With code behind:
namespace myApp
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Button1.Click += new EventHandler(myevent);
}
protected void myevent(object sender, EventArgs e)
{
Response.Write("Hi from the page");
}
}
}
And the control is simply:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControlWithButton.ascx.cs" Inherits="myApp.UserControlWithButton" %>
<asp:Button ID="ButtonInsideControl" runat="server" Text="ButtonInsideControl" />
with its code behind :
namespace myApp
{
public partial class UserControlWithButton : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
ButtonInsideControl.Click += new EventHandler(myEvent);
}
protected void myEvent(object sender, EventArgs e)
{
Response.Write("Hi from inside the control");
}
}
}
When I run the app the myEvent from inside the control is never hit but myevent on the webform is hit when I click its button.
Can anyone tell me how I can bind the user controls button dynamically from with in the user control?