How do I dynamically create user controls?

  • Thread starter Thread starter David J. Berman
  • Start date Start date
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!
 
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!
 
Back
Top