Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Programmatically adding a user control and setting values

Reply
Thread Tools

Programmatically adding a user control and setting values

 
 
alun65@gmail.com
Guest
Posts: n/a
 
      01-17-2008
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
 
Reply With Quote
 
 
 
 
grava
Guest
Posts: n/a
 
      01-17-2008


<(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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

 
Reply With Quote
 
 
 
 
alun65@gmail.com
Guest
Posts: n/a
 
      01-17-2008
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?

 
Reply With Quote
 
grava
Guest
Posts: n/a
 
      01-17-2008


<(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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

 
Reply With Quote
 
Kevin Spencer
Guest
Posts: n/a
 
      01-17-2008
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

<(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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



 
Reply With Quote
 
alun65@gmail.com
Guest
Posts: n/a
 
      01-17-2008
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
 
Reply With Quote
 
Milosz Skalecki [MCAD]
Guest
Posts: n/a
 
      01-17-2008
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


"(E-Mail Removed)" 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
>

 
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
Adding AJAX Control Toolkit CollapsiblePanelExtender programmatically Jay ASP .Net 0 11-30-2009 11:50 PM
Setting impersonation values programmatically itmanager ASP .Net Security 1 09-14-2006 07:06 PM
Dynamically Adding User Control with Child User Control Travis Pruitt ASP .Net Building Controls 0 01-13-2005 08:49 PM
Programmatically Adding Web User Controls Jason Dunbar ASP .Net Web Controls 0 11-08-2004 12:23 PM
localizing web form without setting values programmatically Philipp Sumi ASP .Net 2 07-23-2003 09:27 AM



Advertisments