title: Runtime textbox creation creates issue
body: <p>This code works fine for first two times,i.e ,when i click on "Add more solution" it creates a new row and controls respectively but when i click on  "Add more solution" for the third time and "add step" button respective to that,,it creates problem.</p>
  
  <pre><code>protected void Page_Load(object sender, EventArgs e)
  {
  
          for (int i = 0; i &lt; TotalNumberAdded; i++)
          {
              AddControls((i + 1), plcSolution);
          }
          for (int i = 0; i &lt; TotalNumberSolAdded; i++)
          {
  
              AddMoreControls((i + 1), plcAddMoreSolution, 1);
              Button b = (Button)plcAddMoreSolution.FindControl("btn" + (i+1));
  
              for (int j = 0; j &lt; TotalNumberSolStepAdded; j++)
              {
  
                  AddMoreStepControls((j + 1), plcAddMoreSolution);
              }
          }
  
  
  }
  
  
  
  protected void btnAdd_Click(object sender, EventArgs e)
  {
  
  
          TotalNumberAdded++;
          AddControls(TotalNumberAdded, plcSolution);
  
  }
  private void AddControls(int controlNumber, PlaceHolder plc)
  {
          TextBox txtBoxSolution = new TextBox();
          Label lblSolution = new Label();
  
          txtBoxSolution.ID = "txtBoxSolution" + controlNumber;
          txtBoxSolution.TextMode = TextBoxMode.MultiLine;
  
          txtBoxSolution.Width = 470;
          txtBoxSolution.Height = 50;
          lblSolution.ID = "lblSolution" + controlNumber;
  
          lblSolution.Text = "Step " + (controlNumber + 1) + ": ";
          lblSolution.Width = 200;
  
  
          plc.Controls.Add(lblSolution);
  
          plc.Controls.Add(txtBoxSolution);
  
  
  
  }
  
  protected int TotalNumberAdded
  {
  
      get { return (int)(ViewState["TotalNumberAdded"] ?? 0); }
      set { ViewState["TotalNumberAdded"] = value; }
  }
  
  
  protected void btnAlternate_Click(object sender, EventArgs e)
  {
      lblSol.Text = "Solution 1";
      string str = (string)ViewState["btnId"];
      if (str != null)
      {
          btn = (Button)plcAddMoreSolution.FindControl(str);
  
          btn.Visible = false;
  
      }
  
      btnAdd.Visible = false;
      TotalNumberSolAdded++;
      AddMoreControls(TotalNumberSolAdded, plcAddMoreSolution,1);
  
  }
  protected int TotalNumberSolAdded
  {
  
      get { return (int)(ViewState["TotalNumberSolAdded"] ?? 0); }
      set { ViewState["TotalNumberSolAdded"] = value; }
  }
  private void AddMoreControls(int controlNumber, PlaceHolder plc,int n)
  {
  
          TextBox txtBoxMoreSolution = new TextBox();
  
          Label lblMoreSolution = new Label();
           btn = new Button();
          btn.Text = "add step";
          btn.ID = "btn" + controlNumber;
          btn.Click += new EventHandler(btn_Click);
          ViewState["btnId"] = btn.ID;
          Label lbl = new Label();
          lbl.Text = "soltuion" + (controlNumber + 1);
          lbl.ID = "moreSolution" + (controlNumber + 1);
          lbl.Font.Size = 20;
          lbl.Font.Underline = true;
  
          txtBoxMoreSolution.ID = "txtBoxMoreSolution" + controlNumber;
          txtBoxMoreSolution.TextMode = TextBoxMode.MultiLine;
  
          txtBoxMoreSolution.Width = 470;
          txtBoxMoreSolution.Height = 50;
          lblMoreSolution.ID = "lblMoreSolution" + controlNumber;
  
          lblMoreSolution.Text = "Step " + n + ": ";
          lblMoreSolution.Width = 200;
  
  
  
          plc.Controls.Add(lbl);
  
          plc.Controls.Add(lblMoreSolution);
  
          plc.Controls.Add(txtBoxMoreSolution);
  
          plc.Controls.Add(btn);
  
  
  
  }
  
  private void btn_Click(object sender, EventArgs e)
  {
      TotalNumberSolStepAdded++;
      AddMoreStepControls(TotalNumberSolStepAdded, plcAddMoreSolution);
  }
  
  protected int TotalNumberSolStepAdded
  {
  
      get { return (int)(ViewState["TotalNumberSolStepAdded"] ?? 0); }
      set { ViewState["TotalNumberSolStepAdded"] = value; }
  }
  
  private void AddMoreStepControls(int controlNumber, PlaceHolder plc)
  {
  
          TextBox txtBoxMoreStepSolution = new TextBox();
          Label lblMoreStepSolution = new Label();
  
          txtBoxMoreStepSolution.ID = "txtBoxMoreStepSolution" + controlNumber;
          txtBoxMoreStepSolution.TextMode = TextBoxMode.MultiLine;
  
          txtBoxMoreStepSolution.Width = 470;
          txtBoxMoreStepSolution.Height = 50;
          lblMoreStepSolution.ID = "lblMoreStepSolution" + controlNumber;
  
          lblMoreStepSolution.Text = "Step " + (controlNumber +1) + ": ";
          lblMoreStepSolution.Width = 200;
  
  
          plc.Controls.Add(lblMoreStepSolution);
  
          plc.Controls.Add(txtBoxMoreStepSolution);
  
  
  }
  </code></pre>