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

P

Phoenix

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

Phoenix

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)
 
T

Teemu Keiski

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.
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,233
Members
46,820
Latest member
GilbertoA5

Latest Threads

Top