请看下面的代码:
<asp:GridView ID="GVHistoricNames" runat="server"
DataSourceID = "SQLHistoricNames" AutoGenerateColumns="False"
AllowPaging="True" HorizontalAlign="Center" DataKeyNames="id">
<Columns>
<asp:TemplateField HeaderText="id">
<ItemTemplate>
<asp:HyperLink ID="idHyperlink" runat="server" NavigateUrl='<%# Eval("id", "frmidHistoricNames.aspx?id={0}") %>' Text='<%# Bind("id") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="LastUpdated">
<ItemTemplate>
<asp:Label ID="LastUpdatedLabel" runat="server" Text='<%# Bind("LastUpdated") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="LastChecked">
<ItemTemplate>
<asp:Label ID="LastCheckedLabel" runat="server" Text='<%# Bind("LastChecked") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Usercode">
<ItemTemplate>
<asp:DropDownList ID="ddlUsercode" runat="server" SelectedValue='<%# Bind("Usercode") %>'>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="UpdateHistoricName" runat="server" CausesValidation="False" CommandName="Update" Text="Update"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SQLidHistoricNames" runat="server" UpdateCommand="update dbaperson set Usercode=@Usercode WHERE ID=@ID">
<SelectParameters>
<asp:Parameter Name="Usercode" Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="id" Type="Int32" />
<asp:Parameter Name="Usercode" Type="String" />
</UpdateParameters>
当更新语句运行时,@Usercode 的参数始终为空。@ID 的参数不是。为什么@Usercode 的参数值为空?我不知道如何解决这个问题(我通常会单步执行代码,但这都是以声明方式声明的)。