Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Building Controls > Dynamically loading user control into Placeholder gives Object reference not set to an instance of an object

Reply
Thread Tools

Dynamically loading user control into Placeholder gives Object reference not set to an instance of an object

 
 
Phoenix
Guest
Posts: n/a
 
      06-06-2005
I've created user controls that contain listboxes that are dynamically
populated from the database. In the html view of the user control
(ucSectorsIndustries.ascx) is the <asp:listbox id="lbSector"
runat="server" Rows="5"></asp:listbox> code. In the codebehind I have
the following:

Protected WithEvents lbSector As System.Web.UI.WebControls.ListBox
....
On Page_Load of the user control I have

For i As Integer = 0 To 5
lbIndustry.Items.Add(New ListItem("----", ""))
Next
lbIndustry.DataBind()

This usercontrol works great in a page on which it is dropped via the
GUI, but on another page where it is loaded like this:
Dim mySectorsIndustries As ucSectorsIndustries = New
ucSectorsIndustries
PlaceHolder1.Controls.Add(mySectorsIndustries)

it seems to be NULL and gives the old "
Exception Details: System.NullReferenceException: Object reference not
set to an instance of an object."

Source Error: (Line 69 is Red)

Line 68: For i As Integer = 0 To 5
Line 69: lbIndustry.Items.Add(New ListItem("----", ""))
Line 70: Next
Line 71: lbIndustry.DataBind()


I have a feeling it is the way it is instantiating the object, but I
don't know how to fix it...It is as if the HTML part of the user
control is loading AFTER the Page_Load in the codebehind. Please help.

 
Reply With Quote
 
 
 
 
Phoenix
Guest
Posts: n/a
 
      06-06-2005
I found the problem, i wasn't calling
Page.LoadControL("ucMySectorFilters.ascx") before adding the
control...duh.

Here's the working code (hopefully it will help out someone else!):

Dim mySectorFiltersControl As ucMySectorFilters = New ucMySectorFilters
mySectorFiltersControl =
Page.LoadControl("ucMySectorFilters.ascx")
mySectorFiltersControl.listBoxStyle =
ucMySectorFilters.enlistBoxStyle.ContentPage
PlaceHolder1.Controls.Add(mySectorFiltersControl)

 
Reply With Quote
 
 
 
 
Teemu Keiski
Guest
Posts: n/a
 
      06-06-2005
In your original code it seemed as if the code

lbIndustry.Items.Add(New ListItem("----", ""))

tries to refer to lbIndustry which wouldn't exist as you have lbSector in
the control.

And yes as you noticed, indeed as you instantiate the class it instantiates
only the code-behind part of the UC; which has no knowledge of the markup.
Therefore you need to use LoadControl.

--
Teemu Keiski
ASP.NET MVP, AspInsider
Finland, EU


 
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
Object Delayed loading dynamically into Placeholder MattKlepeis@gmail.com ASP .Net Building Controls 0 10-05-2006 02:28 PM
Dynamically Loading User Control in PlaceHolder Ugur Ekinci ASP .Net Building Controls 2 11-27-2005 04:37 PM
Server.Transfer gives object reference not set to an instance of an object. Greg ASP .Net 0 11-22-2005 04:58 PM
User Control Error : Object reference not set to an instance of an object. gishani ratnayake via .NET 247 ASP .Net Web Controls 1 03-11-2005 06:47 PM
HELP! Error Loading ASPX : Object Reference not set to an instance object Pedro Correia ASP .Net 0 07-25-2003 10:42 AM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57