Handling Events in Nested Controls

Discussion in 'ASP .Net' started by DotNetGuru, Jun 26, 2003.

  1. DotNetGuru

    DotNetGuru Guest


    I have nested User Controls like below.
    User_Control_12(contains method DisplayMessage)

    User_Control_2(contains event onButtonClick )

    User_Control_1 and User_Control_2 are loaded in the PAGE_LOAD of a
    Layout.aspx. This aspx page WIRES the event of the control
    User_Control_2(event onButtonClick) to the method of
    User_Control_12(DisplayMessage) as below

    oControl2.onButtonClick = new

    The error returned is "Object reference not set to an instance of an
    Control12 is loeaded in Control11 and control11 is loaded in Control1.
    Control1 is loaded in Layout.aspx. I do not want to use BubbleEvent.
    Isn't there a simpler way of getting these controls connected. Below
    is my code... Help appreciated

    Below is the code of Layout.ascx.cs
    public class Layout : System.Web.UI.Page
    protected System.Web.UI.HtmlControls.HtmlTableCell tblcellControl1;
    protected System.Web.UI.HtmlControls.HtmlTableCell tblcellControl2;

    private void Page_Load(object sender, System.EventArgs e)
    // Put user code to initialize the page here
    NestedControls.Control1 oControl1 = (Control1)

    NestedControls.Control2 oControl2 = (Control2)

    oControl2.onButtonClick = new

    Below is the code for Control2

    public abstract class Control2 : System.Web.UI.UserControl
    protected System.Web.UI.WebControls.Button Button1;

    private void Page_Load(object sender, System.EventArgs e)
    // Put user code to initialize the page here

    public EventHandler onButtonClick
    set{this.Button1.Click +=value; }

    Below is the code for Control12(method to wire to)
    public void DisplayMessage(object sender, EventArgs e)
    Response.Write("Button Clicked of Control_12");

    Please help me sort this problem.

    Thank You.
    DotNetGuru, Jun 26, 2003
    1. Advertisements

  2. The problem I have had with dynamically adding controls (ie adding them
    during Page_Load) is that the session state gets loaded before you have
    created the controls and thus the event handlers and the controls are not
    present until it is too late.

    You can add the controls and event handlers in the OnInit function (don't
    use the InitializeComponent function since that is a visual studio only
    property and it will delete your code). Perferrably you would write your
    control adding functions in their own function and call that function from

    If you search for "lifecycle of asp.net" or something like that you can get
    the particulars.


    Todd Thompson
    Todd Thompson, Jun 26, 2003
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.