Hi Suzanne
> I think it
> may be because, since I don't load the user controls until the page load,
> the viewstate holding the datagrid information is discarded because the
> control is not yet loaded.
I agree. If you ever want to add controls dynamically to a page and have
them track their viewstate, you need to create them during the Page_Init
event (this is the only chance you get before the viewstate is
deserialized). However, this will cause you problems as you're making a
decision based on something retrieved from the viewstate; clearly this won't
be available to you during the Init event.

Perhaps it would be worth 'hardwiring' the decision making logic for now
rather that accessing the viewstate. Then you can perform this and the
control generation during the Page_Init and check that everything works the
way you want.

Does this help at all?
Joe