Any list style control will work for this.
RadGrid seems to get the most love and has the most well tested features. I recently implement this system in a TreeList control because my Sections could be nested. I had some issues, and a features was recently added to the latest release to fix my problem.
Your biggest hurdle is overcoming the complexities that arise when you dynamically add new controls into ASP.net's control hierarchy. Once you add it dynamically, you are responsible for re-adding it on post-back. Fail to do this properly and you'll lose view state for the sub controls as well as events. Also, when to add it ( in which event / cycle state) is important. And if that's not enough, when you set it's ID value can have consequences as well. In some cases this:
has different consequences than this:
Good luck. Start small with a bare-bones solution, and work only one dynamically created the control. ALSO, be sure to have a way to test post back as you experiment. Often times, dynamic controls seem easy ( and appear to 'work') until you think your 'finished' and cause a post back, only to realize you have no view state or worse, no events on the dynamic control ( text changed) fired.
It gets to be even more fun when you have a Dynamic Control with additional dynamic controls.