title: dynamic check boxes in a table won't hold checked value
body: <p>I am dynamically creating a table with data and check boxes in it, my problem is when i check to see one specific check-box is checked, out of many, it resets to the default state of false (note: its not just one it doesn't work with, it works with non of the generated check boxes)
  <br/>
  <br/></p>
  
  <p>Before i create the page_load function i create the check box, further down i create the table, and populate it with data, then i set up a function to check on a click to see if the box was indeed checked, iv'e tried many iterations of this with no luck
  <br/>
  <br/></p>
  
  <pre><code>protected void  table_builder(SqlDataReader readerinfo)
  {
      //Create a new step for the user
      step3label.Text = "3.";
      //Table header
      TableHeaderRow hr = new TableHeaderRow();
      TableHeaderCell hc = new TableHeaderCell();
      TableHeaderCell hc2 = new TableHeaderCell();
      TableHeaderCell hc3 = new TableHeaderCell();
      hr.Cells.Add(hc);
      hc.Text = "ID"; //Assign header 1 with a name
      hr.Cells.Add(hc2);
      hc2.Text = "Name";//Assign header 2 with a name
      hr.Cells.Add(hc3);
      hc3.Text = "Selection";
      Table1.Rows.Add(hr);
  
  
      //Dynamic Table Generation
      int numcells = 3;
      int triswitch = 0;//this is use to chose which cell is made, id, name or selection
      string checkboxID = null;
  
  
      while (readerinfo.Read())   //execute the following aslong as there is data to fill the table with
      {
          for (int j = 0; j &lt; 1; j++)
          {
              TableRow r = new TableRow();
              for (int i = 0; i &lt; numcells; i++)
              {
                  TableCell c = new TableCell();
  
                  switch (triswitch)
                  {
                      case 0: // this case sets the info for the feild id
                          c.Text = readerinfo.GetSqlGuid(0).ToString();
                          checkboxID = readerinfo.GetSqlGuid(0).ToString();
                          r.Cells.Add(c);
                          triswitch = 1;
                          break;
  
                      case 1:
                          c.Text = readerinfo.GetString(1);
                          r.Cells.Add(c);
                          triswitch = 2;
                          break;
  
                      case 2:
                          Checkbox_creator(checkboxID,ref c);
                          r.Cells.Add(c);
                          triswitch = 0;
                          break;
  
                  }
              }
              Table1.Rows.Add(r);
          }
      }       
  }
  
  protected void Checkbox_creator(string id,ref TableCell send)
  {
      //create the checbox
      ckbx = new CheckBox();
      ckbx.ID = "CBX" + checkboxid.ToString();
      checkboxid++;
      ckbx.InputAttributes.Add("value", id);
      send.Controls.Add(ckbx); //add the chekbox to the cell
      checkboxidlist.Add(id);//add the id of the checkbox to the list 
  }
  
  
  
  //
  //AFTER DATATABLE IS LOADED
  //
  
  public void test()
  {
      // Find control on page.
      CheckBox myControl1 = (CheckBox)Table1.FindControl("CBX0");
      if (myControl1 != null)
      {
          // Get control's parent.
          Control myControl2 = myControl1.Parent.Parent.Parent;
          Response.Write("Parent of the text box is : " + myControl2.ID);
          if (myControl1.Checked == true)
          {
              Response.Write("check box checked");
          }
      }
      else
      {
          Response.Write("Control not found");
      }
  }
   //on Submit button click, execute the following function
  protected void Submit_Click(object sender, EventArgs e)
  {
      //Code to be executed
      string Userinput; //declare Userinput variable
      Userinput = Searchbox.Value; // Set variable to asp controll        
      Response.Write("&lt;br /&gt; &lt;br /&gt;"+ Userinput +" &lt;- user imput works");
      ConnectToSql(Userinput);//insert what the user submitted into a query
      test();
      //
      //
      //NoTe code validation is needed to prevent injections
      //  
  }
  </code></pre>