protected void ButtonAddEnvironment_Click(object sender, EventArgs e)
        {
            WebUserControlEnvironments en = (WebUserControlEnvironments)LoadControl("~/WebUserControlEnvironments.ascx");

            en.ID = PlaceHolderEnvironments.Controls.Count.ToString() + "_Environment";

            PlaceHolderEnvironments.Controls.Add(en);

            List <WebUserControlEnvironmentsData> environData = EnvironmentsData; // Get it out of the viewstate

            WebUserControlEnvironmentsData enData = new WebUserControlEnvironmentsData();

            enData = en.Data;
            environData.Add(enData);

            EnvironmentsData = environData;
        }
        public void Environment_UserControlButtonRemoveClicked(object sender, EventArgs e)
        {
            // TO DO cast..
            WebUserControlEnvironments toDel = (WebUserControlEnvironments)sender;

            if (toDel != null)
            {
                // Find the index of the control
                int indexToDel = PlaceHolderEnvironments.Controls.IndexOf(toDel);
                if (indexToDel >= 0)
                {
                    List <WebUserControlEnvironmentsData> enData = EnvironmentsData; // Get it out of the viewstate
                    enData.RemoveAt(indexToDel);
                    EnvironmentsData = enData;

                    LoadEnvironmentsControls();
                    LoadEnvironmentsEvents();
                }
            }
        }
        // Push the environments in the panelHolder again
        void LoadEnvironmentsControls()
        {
            List <WebUserControlEnvironmentsData> enData = EnvironmentsData; // Get it out of the viewstate

            if (enData != null)
            {
                PlaceHolderEnvironments.Controls.Clear();

                int countID = 0;
                foreach (WebUserControlEnvironmentsData en in enData)
                {
                    WebUserControlEnvironments environment = (WebUserControlEnvironments)LoadControl("~/WebUserControlEnvironments.ascx");
                    environment.LoadData(en);
                    environment.ID = countID.ToString() + "_Environment";
                    ++countID;

                    PlaceHolderEnvironments.Controls.Add(environment);
                }
            }

            EnvironmentsData = enData;
        }
        public void Environment_UserControlFieldChanged(object sender, EventArgs e)
        {
            WebUserControlEnvironments en = (WebUserControlEnvironments)sender;

            if (en != null)
            {
                // Find the control.
                int indexOfControl = PlaceHolderEnvironments.Controls.IndexOf(en);
                if (indexOfControl >= 0)
                {
                    List <WebUserControlEnvironmentsData> enData = EnvironmentsData; // Get it out of the viewstate

                    if (enData.Count <= indexOfControl)
                    {
                        throw new ExecutionEngineException("Ooopps");
                    }

                    enData[indexOfControl] = ((EnvironmentDataEventArgs)e).Data;
                    EnvironmentsData       = enData;
                }
            }
        }