472,096 Members | 1,531 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,096 software developers and data experts.

Programmatically adding a user control and setting values

I'm having trouble programmatically adding a user control and then
setting some of it's server controls.

I add the user control to the code behind and add it to a placeholder:

protected void Page_Load(object sender, EventArgs e)
{
UserControls_WebUserControl myControl = new
UserControls_WebUserControl();
PlaceHolder1.Controls.Add(web);
}

And I make a reference to it on the webpage:

<%@ Register Src="~/UserControls/WebUserControl.ascx"
TagName="myUserControl" TagPrefix="CustomControl" %>

All good so far?

For the user contorl, to simplify it the the Page_Load of the user
control is trying to set a hyperlink text (as later on a will
hopefully pass a load of values to a constructor of the user control)
like so:

HyperLink1.Text = "Hi I'm a hyperlink";

I'm expecting the obvious (well obvious to me anyways). For one
hyperlink with the text "Hi I'm a hyperlink".

instead when I run this I get the error:

Exception Details: System.NullReferenceException: Object reference not
set to an instance of an object.

When debugging the hyperlink I've placed on the user control doesn't
seem to exist! Could any kind programmer tell this noobie what he's
doing wrong. Thanks in advance.

Alun
Jan 17 '08 #1
6 10007


<al****@gmail.comwrote in message
news:f5**********************************@v17g2000 hsa.googlegroups.com...
I'm having trouble programmatically adding a user control and then
setting some of it's server controls.

I add the user control to the code behind and add it to a placeholder:

protected void Page_Load(object sender, EventArgs e)
{
UserControls_WebUserControl myControl = new
UserControls_WebUserControl();
PlaceHolder1.Controls.Add(web);
}

And I make a reference to it on the webpage:

<%@ Register Src="~/UserControls/WebUserControl.ascx"
TagName="myUserControl" TagPrefix="CustomControl" %>

All good so far?

For the user contorl, to simplify it the the Page_Load of the user
control is trying to set a hyperlink text (as later on a will
hopefully pass a load of values to a constructor of the user control)
like so:

HyperLink1.Text = "Hi I'm a hyperlink";

I'm expecting the obvious (well obvious to me anyways). For one
hyperlink with the text "Hi I'm a hyperlink".

instead when I run this I get the error:

Exception Details: System.NullReferenceException: Object reference not
set to an instance of an object.

When debugging the hyperlink I've placed on the user control doesn't
seem to exist! Could any kind programmer tell this noobie what he's
doing wrong. Thanks in advance.

Alun
Where is HyperLink1 Control ??? In the page or in the UserControl ???

Try with FindControl within the scope of the container of the Hyperlink
(page or control).

HTH
--
Gianluca Gravina
http://blogs.ugidotnet.org/thinkingingrava

Jan 17 '08 #2
The server contorl HyperLink1 is on the user control .ascx page.

Thanks for the suggestion Gianluca. In the user contorl codebehind I
tried your suggestion out:

protected void Page_Load(object sender, EventArgs e)
{
((HyperLink)(FindControl("HyperLink1"))).Text = "I am the
hyperlink";
}

But I still get a System.NullReferenceException for the hyperlink. Any
other ideas?

Jan 17 '08 #3


<al****@gmail.comwrote in message
news:b5**********************************@u10g2000 prn.googlegroups.com...
The server contorl HyperLink1 is on the user control .ascx page.

Thanks for the suggestion Gianluca. In the user contorl codebehind I
tried your suggestion out:

protected void Page_Load(object sender, EventArgs e)
{
((HyperLink)(FindControl("HyperLink1"))).Text = "I am the
hyperlink";
}

But I still get a System.NullReferenceException for the hyperlink. Any
other ideas?

Here is a working sample.

Code in the page Code Behind:

private Control c;

protected void Page_Init(object sender, EventArgs e)
{
c = LoadControl("WebUserControl1.ascx");
plcHolder.Controls.Add(c);
}

protected void Page_Load(object sender, EventArgs e)
{
WebUserControl1 wc = (WebUserControl1) c;
((TextBox) wc.FindControl("controlTextBox")).Text = "Test";
}

In the ascx there's a textbox with id="controlTextBox".

HTH
--
Gianluca Gravina
http://blogs.ugidotnet.org/thinkingingrava

Jan 17 '08 #4
This sort of thing requires a familiarity with the ASP.Net Control Execution
LifeCycle, as the Page (which is a Control) and all the Controls in it, host
other Controls, and there is a cascade of events which occurs when the class
is loaded. See the following:

http://www.digcode.com/default.aspx?...1-584539cbb6bf

--
HTH,

Kevin Spencer
Chicken Salad Surgeon
Microsoft MVP

<al****@gmail.comwrote in message
news:f5**********************************@v17g2000 hsa.googlegroups.com...
I'm having trouble programmatically adding a user control and then
setting some of it's server controls.

I add the user control to the code behind and add it to a placeholder:

protected void Page_Load(object sender, EventArgs e)
{
UserControls_WebUserControl myControl = new
UserControls_WebUserControl();
PlaceHolder1.Controls.Add(web);
}

And I make a reference to it on the webpage:

<%@ Register Src="~/UserControls/WebUserControl.ascx"
TagName="myUserControl" TagPrefix="CustomControl" %>

All good so far?

For the user contorl, to simplify it the the Page_Load of the user
control is trying to set a hyperlink text (as later on a will
hopefully pass a load of values to a constructor of the user control)
like so:

HyperLink1.Text = "Hi I'm a hyperlink";

I'm expecting the obvious (well obvious to me anyways). For one
hyperlink with the text "Hi I'm a hyperlink".

instead when I run this I get the error:

Exception Details: System.NullReferenceException: Object reference not
set to an instance of an object.

When debugging the hyperlink I've placed on the user control doesn't
seem to exist! Could any kind programmer tell this noobie what he's
doing wrong. Thanks in advance.

Alun

Jan 17 '08 #5
Thanks for the working code.

From that I was able to figure out what I was doing wrong. I was
trying to instantate the user contorl like a server control like:

UserControls_WebUserControl myControl = new
UserControls_WebUserControl();

where as like you have done, I should have been using the
LoadControl() method.

I stumbled accross this posting that confirmed the different
instanition methods:

http://groups.google.com/group/micro...3f908c1cae7af0

Just as a side note for anyone interested in passing parameters to a
user control constructor, there's a great article here that sorts it
out:

http://blah.winsmarts.com/2006/05/20...aspx?postID=12

Thanks grava for your help. My problems are now solved! At least for
the next hour or so ;)
Jan 17 '08 #6
Howdy,

Exception you get is because UserControl are treated differently (you can't
use constructor to instantiate), use LoadControl method instead (then, all
references to your controls within usercontrol will be properly intantiated):

UserControls_WebUserControl myControl =
(UserControls_WebUserControl)
this.LoadControl("~/UserControls/WebUserControl.ascx")
PlaceHolder1.Controls.Add(myControl);

In addition move the code to Page_Init event because the view state.

Hope this helps
--
Milosz
"al****@gmail.com" wrote:
I'm having trouble programmatically adding a user control and then
setting some of it's server controls.

I add the user control to the code behind and add it to a placeholder:

protected void Page_Load(object sender, EventArgs e)
{
UserControls_WebUserControl myControl = new
UserControls_WebUserControl();
PlaceHolder1.Controls.Add(web);
}

And I make a reference to it on the webpage:

<%@ Register Src="~/UserControls/WebUserControl.ascx"
TagName="myUserControl" TagPrefix="CustomControl" %>

All good so far?

For the user contorl, to simplify it the the Page_Load of the user
control is trying to set a hyperlink text (as later on a will
hopefully pass a load of values to a constructor of the user control)
like so:

HyperLink1.Text = "Hi I'm a hyperlink";

I'm expecting the obvious (well obvious to me anyways). For one
hyperlink with the text "Hi I'm a hyperlink".

instead when I run this I get the error:

Exception Details: System.NullReferenceException: Object reference not
set to an instance of an object.

When debugging the hyperlink I've placed on the user control doesn't
seem to exist! Could any kind programmer tell this noobie what he's
doing wrong. Thanks in advance.

Alun
Jan 18 '08 #7

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

8 posts views Thread by mark.norgate | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.