posting back with a textbox vs label
===

Here is my code - 
    
    dtDetails = new DataSet();
 
    foreach (DataRow dr in dtDetails.Rows) {

        int rowID = 1;
        HtmlTableRow row = new HtmlTableRow();
        {
            HtmlTableCell cell = new HtmlTableCell();
            TextBox tb = new TextBox();
            tb.ID = "tbJanuary" + rowID;

            tb.Text = dr["Jan"].ToString();

            cell.Controls.Add(tb);
            row.Cells.Add(cell);
        }
    }

When this initially runs, I get correct values within my textboxes.

However, when I update a value in the database through a button click on the page, it causes the expected PostBack. When I come back into this loop, dr["Jan"].ToString() has the new correct value base don that change, but the textbox on the oage never gets updated.

If I change the code to this - 

    dtDetails = new DataSet();
 
    foreach (DataRow dr in dtDetails.Rows) {

        int rowID = 1;
        HtmlTableRow row = new HtmlTableRow();
        {
            HtmlTableCell cell = new HtmlTableCell();
            Label lbl = new Label();
            lbl.ID = "lblJanuary" + rowID;

            lbl.Text = dr["Jan"].ToString();

            cell.Controls.Add(lbl);
            row.Cells.Add(cell);
        }
    }

the label contains the correct new value.

What is it about the text box that doesn't display the correct value?