Handling Events in Nested Controls

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

  1. DotNetGuru

    DotNetGuru Guest

    Hi,

    I have nested User Controls like below.
    User_Control_1
    User_Control_11
    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
    EventHandler(oControl1.oControl11.oControl12.DisplayMessage);

    The error returned is "Object reference not set to an instance of an
    object."
    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)
    LoadControl("Control1.ascx");
    tblcellControl1.Controls.Add(oControl1);

    NestedControls.Control2 oControl2 = (Control2)
    LoadControl("Control2.ascx");
    tblcellControl2.Controls.Add(oControl2);

    oControl2.onButtonClick = new
    EventHandler(oControl1.oControl11.oControl12.DisplayMessage);
    }


    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.
    Guru
     
    DotNetGuru, Jun 26, 2003
    #1
    1. Advertising

  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
    OnInit.

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

    HTH,

    Todd Thompson
     
    Todd Thompson, Jun 26, 2003
    #2
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Barry
    Replies:
    0
    Views:
    380
    Barry
    Aug 6, 2003
  2. Dakota2030
    Replies:
    0
    Views:
    495
    Dakota2030
    Mar 11, 2005
  3. newbye
    Replies:
    0
    Views:
    586
    newbye
    Jul 6, 2006
  4. SevDer
    Replies:
    2
    Views:
    1,320
    Walter Wang [MSFT]
    Nov 13, 2007
  5. Chris

    Events Events Events Please Help

    Chris, Aug 30, 2005, in forum: ASP .Net Web Controls
    Replies:
    0
    Views:
    405
    Chris
    Aug 30, 2005
Loading...

Share This Page