Accessing controls created dynamically (c#)

Solution 1:

You must recreate your controls after each postback.

ASP.NET is stateless, that is, when you postback a page to the server, your dynamically created controls won't be part of the page anymore.

Last week I had to overcome this situation once more.

What did I do? I saved the data that I used to create the controls inside Session object. On PageLoad method I passed that same data to recreate the dynamic controls.

What I suggest is: Write a method to create the dynamic controls.

On PageLoad method check to see if it's a postback...

if(Page.IsPostBack)
{
   // Recreate your controls here.
}

A really important thing: assign unique IDs to your dynamically created controls so that ASP.NET can recreate the controls binding their existing event handlers, restoring their ViewState, etc.

myControl.ID = "myId";

I had a hard time to learn how this thing works. Once you learn you have power in your hands. Dynamically created controls open up a new world of possibilities.

As Frank mentioned: you can use the "is" keyword this way to facilitate your life...

if(child is RadioButtonList)


Note: it's worth to mention the ASP.NET Page Life Cycle Overview page on MSDN for further reference.

Solution 2:

When are you doing this in your code? Be sure you do this at the right time in the ASP life cycle or your controls don't exist yet: http://msdn.microsoft.com/en-us/library/ms178472.aspx