Controls within .ascx are not displaying their new value on postback
<p>This seems like an elementary issue but it has me stumped.</p>

<p>I have a main page which loads a custom control (.ascx) on page_load.</p>

<p>This custom control has two fields. One of them being a dropdownlist and the other being a text box. When the dropdownlist changes value it triggers a post back, some logic is executed server side and a value is generated for the textbox. I stepped through the code and the value is created and assigned correctly. However, when the page is rendered the value does not change.</p>

<p>If I change the textbox value to "QQQ" and trigger the postback, "QQQ" stays in the textbox so I can verify viewstate is working. </p>

<p>Is there any reason why the generated value is not being displayed in the form on postback. This process works fine on the initial page load.</p>

<p><strong>.aspx.cs</strong></p>

<pre><code>protected void Page_Load(object sender, EventArgs e)
{
   string ascxPath = @"~/_CONTROLTEMPLATES/TRC_BITS.ascx";
   TRC_BITS control = Page.LoadControl(ascxPath) as TRC_BITS;
   phForm.Controls.Add(control);
}
</code></pre>

<p><strong>.ascx</strong></p>

<pre><code>   &lt;asp:TextBox ID="message" runat="server" TextMode="MultiLine" /&gt;&lt;br/&gt;
   &lt;asp:DropDownList ID="year" runat="server" AutoPostBack="true"&gt;
      &lt;asp:ListItem Text="2011"&gt;2011&lt;/asp:ListItem&gt;
      &lt;asp:ListItem Text="2012"&gt;2012&lt;/asp:ListItem&gt;
      &lt;asp:ListItem Text="2013"&gt;2013&lt;/asp:ListItem&gt;
   &lt;/asp:DropDownList&gt;
</code></pre>

<p><strong>.ascx.cs</strong></p>

<pre><code>protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        year.SelectedValue = DateTime.Now.Year.ToString();
    }
    if (year.SelectedValue == 2012)
       message.Text = "ABC";
    else
       message.Text = "XYZ";
}
</code></pre>
