Dynamic Controls Should be Loaded on Each PostBack
One of the biggest challenges with working with dynamically added controls is that these controls must be programmatically added on each postback. That is, you can’t just load these controls on the first page load, and then not reload them on subsequent postbacks. Failure to explicitly add the controls on each postback will cause the controls to literally disappear on postbacks.
Understand better the ViewState and Dynamic Property Settings
Expecting your ViewState to retain after the postback, always assign same ID to the dynamic control