The framework for WebForms does not save automatically dynamically added controls! This came as a surprise for me also...
The documentation is not very clear on this problem. The only advice you can get is to override the methods SaveViewState() and LoadViewState() for the form. I tried this with drop down lists, but it did not work too well, because they lost their associated events, properties and data sources. And the worst thing is that the two methods, that should take care of saving the control's state, are private, so you cannot call them directly from the form, but only by deriving from the control class (DropDownList in my case).
I have decided therefore to save the controls in the session, and this works, except for the fact that you still have to add the associated event handlers each time the form refreshes!
I know many people who have problems with this thing. I am curious if anybody found a better solution...