protected internal virtual void AddedControl (Control control, int index) { ResetControlsCache (); /* Ensure the control don't have more than 1 parent */ if (control._parent != null) control._parent.Controls.Remove (control); control._parent = this; Control nc = ((stateMask & IS_NAMING_CONTAINER) != 0) ? this : NamingContainer; if ((stateMask & (INITING | INITED)) != 0) { control.InitRecursive (nc); control.SetMask (REMOVED, false); } else { control.SetNamingContainer (nc); control.SetMask (REMOVED, false); return; } if ((stateMask & (VIEWSTATE_LOADED | LOADED)) != 0) { if (pendingVS != null) { object vs; bool byId = LoadViewStateByID; string id; if (byId) { control.EnsureID (); id = control.ID; vs = pendingVS [id]; } else { id = null; vs = pendingVS [index]; } if (vs != null) { if (byId) pendingVS.Remove (id); else pendingVS.Remove (index); if (pendingVS.Count == 0) pendingVS = null; control.LoadViewStateRecursive (vs); } } } if ((stateMask & LOADED) != 0) control.LoadRecursive (); if ((stateMask & PRERENDERED) != 0) control.PreRenderRecursiveInternal (); }
protected internal virtual void RemovedControl (Control control) { control.UnloadRecursive (false); control._parent = null; control._page = null; control._namingContainer = null; if ((control.stateMask & AUTOID_SET) != 0) { control._userId = null; control.SetMask (ID_SET, false); } control.NullifyUniqueID (); control.SetMask (REMOVED, true); ResetControlsCache (); }