For those of us who'd rather write code than dragging and dropping controls on a form, here comes a few pointers: 1) Always create all controls of all possible views Even if you don't want to display all dynamically created controls, you will need to create them, if you would like to benefit from ASP.NET's built-in ViewState capability. That said, you don't have to display or even populate (see point 2 below) all controls. Just create them. Then, if you don't want them after all, set their Visible flag to False . 2) Don't databind controls on postback. A common mistake when dynamically creating pages, is to attempt to databind on callback. Well,m the thing is that the control is already bound, sort of speak. The data you are trying to bind is already in the control's view state, isn't it? ;-) 3) Create a FormBuilder class Save yourself some time. Here's a sample FormBuilder (written in VB.NET becuase I get paid for it ;-)): Publ