Check the below code i have modify some of the section (i.e. page load and generate control event. I think this will solve your problem
protected void Page_Load(object sender, EventArgs e)
{
CreateCOntrols();
}
protected void GenerateTextBoxes_onClick(object sender, EventArgs e)
{
pnlDate.Controls.Clear();
CreateCOntrols();
}
private void CreateCOntrols()
{
if (txtNumber.Text != "")
{
int number = Convert.ToInt32(txtNumber.Text);
string top = "";
int left = 0;
TextBox txt;
Table tb = new Table();
tb.ID = "tb1";
TableRow tr = new TableRow();
for (int i = 1; i <= number; i++)
{
txt = new TextBox();
txt.ID = "textBox" + i.ToString();
txt.Attributes.Add("runat", "server");
txt.CssClass = "myDates";
txt.Width = Unit.Pixel(240);
txt.MaxLength = 1;
txt.EnableViewState = true;
txt.Style.Add(HtmlTextWriterStyle.Position, "relative");
txt.Style[HtmlTextWriterStyle.Left] = left + "px";
left += 5;
TableCell tc = new TableCell();
tc.Controls.Add(txt);
tr.Controls.Add(tc);
tb.Controls.Add(tr);
pnlDate.Controls.Add(tb);
}
}
}
public void btn_Click(object sender, EventArgs e)
{
Table t = (Table)Page.FindControl("pnlDate").FindControl("tb1");
TextBox textbox;
foreach (TableRow tr in t.Rows)
{
foreach (TableCell tc in tr.Cells)
{
foreach (Control c in tc.Controls)
{
if (c.GetType() == typeof(TextBox))
{
textbox = (TextBox)c;
Response.Write("TextBox Value is:" + textbox.Text + "");
}
}
}
}
}