I’ve always wondered about this and here is the answer:
ASP.NET controls recreates their hierarchy (at a minimum) twice during a single request to the server:
- First when the control is being restored to a it's previous state.
- Second when all the required modifications are applied.