You have to keep in mind the Scope of your objects.
If you are dynamically creating DropDownLists in a button click event, the scope of those DropDownLists is limited to that function.
You need to declare your list of DropDownLists outside of that function so that their scope can exist for the whole page.
If you do not do this, your DropDownLists will not existed upon postback (so they cannot be rendered again) and also any events raised by the DropDownLists (eg: autopostback) will not be handled.
You should keep track of how many DropDownLists your page requires (in a HiddenField, Session, Cookie, ViewState...any way you wish) and you will need to initialize that number when the page first posts back.
(Recall the ASP.NET Page Life Cycle -> once the page is sent to the browser every control on the server is destroyed)
You may run into a problem because it is recommended that you initialize your dynamic controls in the Page Init event. The Page Init event occurs before the control ViewStates are loaded. The reason why it is recommended that you do this is because right after the Page Init event your control ViewStates are loaded....if you have not instantiated your controls before this, the ViewState cannot be loaded for the control and you will lose all of your Events and other control ViewState data.
Please check out the article on
how to use dynamic controls in asp.net. I realize that this article has examples written in VB but the concepts that you have to understand when using dynamic controls are important to grasp.
-Frinny