Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Handling Events in Nested Controls

Reply
Thread Tools

Handling Events in Nested Controls

 
 
DotNetGuru
Guest
Posts: n/a
 
      06-26-2003
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.Displ ayMessage);

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.Displ ayMessage);
}


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
 
Reply With Quote
 
 
 
 
Todd Thompson
Guest
Posts: n/a
 
      06-26-2003
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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
dynamically adding controls with events (but events are not firing) SevDer ASP .Net 2 11-13-2007 06:33 AM
runtime events that generate other controls and events newbye ASP .Net 0 07-06-2006 06:27 PM
Events Events Events Please Help Chris ASP .Net Web Controls 0 08-30-2005 08:21 PM
Custom Server Control raising events for nested controls Dakota2030 ASP .Net 0 03-11-2005 10:26 PM
Handling events in container controls? Barry ASP .Net 0 08-06-2003 01:04 PM



Advertisments