SQLDataSource update contains null when it should not
<p>Please have a look at the code below:</p>

<pre><code>&lt;asp:GridView ID="GVHistoricNames" runat="server" 
                DataSourceID = "SQLHistoricNames" AutoGenerateColumns="False" 
                AllowPaging="True" HorizontalAlign="Center" DataKeyNames="id"&gt;
                &lt;Columns&gt;
                    &lt;asp:TemplateField HeaderText="id"&gt;
                        &lt;ItemTemplate&gt;
                            &lt;asp:HyperLink ID="idHyperlink" runat="server" NavigateUrl='&lt;%# Eval("id", "frmidHistoricNames.aspx?id={0}") %&gt;' Text='&lt;%# Bind("id") %&gt;'&gt;&lt;/asp:HyperLink&gt;                          
                        &lt;/ItemTemplate&gt;
                    &lt;/asp:TemplateField&gt;
                    &lt;asp:TemplateField HeaderText="LastUpdated"&gt;
                        &lt;ItemTemplate&gt;
                            &lt;asp:Label ID="LastUpdatedLabel" runat="server" Text='&lt;%# Bind("LastUpdated") %&gt;'&gt;&lt;/asp:Label&gt;                           
                        &lt;/ItemTemplate&gt;
                    &lt;/asp:TemplateField&gt;
                     &lt;asp:TemplateField HeaderText="LastChecked"&gt;
                        &lt;ItemTemplate&gt;
                            &lt;asp:Label ID="LastCheckedLabel" runat="server" Text='&lt;%# Bind("LastChecked") %&gt;'&gt;&lt;/asp:Label&gt;                           
                        &lt;/ItemTemplate&gt;
                    &lt;/asp:TemplateField&gt;
                    &lt;asp:TemplateField HeaderText="Usercode"&gt;
                        &lt;ItemTemplate&gt;
                        &lt;asp:DropDownList ID="ddlUsercode" runat="server" SelectedValue='&lt;%# Bind("Usercode") %&gt;'&gt;
                        &lt;/asp:DropDownList&gt;
                        &lt;/ItemTemplate&gt;       
                    &lt;/asp:TemplateField&gt;
                    &lt;asp:TemplateField ShowHeader="False"&gt;
                            &lt;ItemTemplate&gt;
                                &lt;asp:LinkButton ID="UpdateHistoricName" runat="server" CausesValidation="False" CommandName="Update" Text="Update"&gt;&lt;/asp:LinkButton&gt;
                            &lt;/ItemTemplate&gt;
                        &lt;/asp:TemplateField&gt;
                &lt;/Columns&gt;
            &lt;/asp:GridView&gt;

            &lt;asp:SqlDataSource ID="SQLidHistoricNames" runat="server" UpdateCommand="update dbaperson set Usercode=@Usercode WHERE ID=@ID"&gt;
            &lt;SelectParameters&gt;

              &lt;asp:Parameter Name="Usercode" Type="String" /&gt;
           &lt;/SelectParameters&gt;
           &lt;UpdateParameters&gt;
               &lt;asp:Parameter Name="id" Type="Int32" /&gt;
                &lt;asp:Parameter Name="Usercode" Type="String" /&gt;

              &lt;/UpdateParameters&gt;
</code></pre>

<p>The parameter for @Usercode is always null when the update statement runs.  The parameter for @ID is not.  Why is the parameter value for @Usercode null? I am not sure how to trouble shoot this (I would usually step through code but this is all declared declaratively).</p>
