System.Web.UI.Control.AddedControl C# (CSharp) Method

AddedControl() protected method

protected AddedControl ( Control control, int index ) : void
control Control
index int
return void
		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 ();
		}