How do I dynamically create user controls?

D

David J. Berman

Thanks for any help...!

My error is:
Object reference not set to an instance of an object.
public int DisplayOrder {
get {
return (int) ViewState["DisplayOrder"];
}


Here's the setup:
I have made a user control that displays a persons picture. Its like this:

AccountName
[PICTURE]
< 1 of 3 >

You can click the arrows to navigate pictures. The control is smart - you
assign the AccountName property and it hits the database, maintains state
with ViewState. I can put several of them on one page if I put them there
statically. When I do this dynamically, I get the above error.

Question:
I have made a repeater which takes a dataset that has a list of account
names in it. It creates one instance of my control for each name in the
list. My controls appear and render correctly. However, I get the above
error when you click on my navigation buttons. Part of the problem is each
instance of my user control has the same ID.

#1 - How can I get the repeater to assign a unique id for each control?

#2 - Is it the case that the state information won't be managed for me
because my controls are dynamic?

When I put multiple instances of my control statically on a page, it works
fine. When its in the repeater, it renders fine but then clicking on the
nav buttons to navigate pictures produces the error.

Thank you so much!
 
D

David J. Berman

Thanks for the tip! I read about this on MSDN, google'd some examples and I
was able to get it to work. However, there is a glitch:

Suppose I have 10 instances of my picture control with the navigation
buttons underneath (because each person can have multiple pictures). When I
click those buttons each control updates correctly, however, the page seems
to refresh and scroll to the top. Can I make it so that the page doesn't
refresh but the control repaints itself?

My architecture is to have a .aspx page with a PersonList user control
sitting on it. That control is passed a list of accountnames (arraylist)
and for each name it loads a PersonPicture user control dynamically and adds
it to the page.

Thanks!



RMD said:
Check out the Page.LoadControl method.

RMD

David J. Berman said:
Thanks for any help...!

My error is:
Object reference not set to an instance of an object.
public int DisplayOrder {
get {
return (int) ViewState["DisplayOrder"];
}


Here's the setup:
I have made a user control that displays a persons picture. Its like this:

AccountName
[PICTURE]
< 1 of 3 >

You can click the arrows to navigate pictures. The control is smart - you
assign the AccountName property and it hits the database, maintains state
with ViewState. I can put several of them on one page if I put them there
statically. When I do this dynamically, I get the above error.

Question:
I have made a repeater which takes a dataset that has a list of account
names in it. It creates one instance of my control for each name in the
list. My controls appear and render correctly. However, I get the above
error when you click on my navigation buttons. Part of the problem is each
instance of my user control has the same ID.

#1 - How can I get the repeater to assign a unique id for each control?

#2 - Is it the case that the state information won't be managed for me
because my controls are dynamic?

When I put multiple instances of my control statically on a page, it works
fine. When its in the repeater, it renders fine but then clicking on the
nav buttons to navigate pictures produces the error.

Thank you so much!
 

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,769
Messages
2,569,580
Members
45,053
Latest member
BrodieSola

Latest Threads

Top