UpdateParameter不起作用

| 我正在尝试手动设置更新参数。该命令成功执行,我可以拉回数据以确认参数设置正确。但是我的SQL更新语句不会执行。如果我手动定义一个默认值或在update语句中手动输入一个值,它可以正常工作,但是如果我尝试通过一个命令来设置它,则它不起作用。 这是我的代码: SQL数据源
<asp:SqlDataSource ID=\"reconcileDataSource\" runat=\"server\" 
    ConnectionString=\"<%$ ConnectionStrings:ConnectionString %>\" 
     OnUpdating=\"reconcileGrid_Updating\"
    SelectCommand=\"GetReconcileItems\" SelectCommandType=\"StoredProcedure\"
    UpdateCommand=\"UPDATE item SET Stat = @Status WHERE ItemID = @ID\">

    <UpdateParameters>
        <asp:Parameter Name=\"ID\" />
        <asp:Parameter Name=\"TransType\" Type=\"String\" />
        <asp:Parameter Name=\"LocationID\" Type=\"String\" />
        <asp:Parameter Name=\"Description\" Type=\"String\" />
        <asp:Parameter Name=\"Status\" Type=\"String\" />
        <asp:Parameter Name=\"TransferLocation\" Type=\"String\" />
    </UpdateParameters>

</asp:SqlDataSource>
C#代码
    protected void reconcileGrid_Updating(object sender, SqlDataSourceCommandEventArgs e)
    {
      DropDownList ddlReconcileStatus = (DropDownList)reconcileGrid.Rows[reconcileGrid.EditIndex].Cells[0].FindControl(\"ddlReconcileStatus\");
      DropDownList ddlTransferLocation = (DropDownList)reconcileGrid.Rows[reconcileGrid.EditIndex].Cells[0].FindControl(\"ddlTransferLocation\");

      // Set the Stat Value
      reconcileDataSource.UpdateParameters[\"Status\"].DefaultValue = ddlReconcileStatus.SelectedValue.ToString();
}
网格视图
<asp:UpdatePanel ID=\"reconcileUpdatePanel\" runat=\"server\">
        <ContentTemplate>
            <asp:GridView ID=\"reconcileGrid\" runat=\"server\" AutoGenerateColumns=\"False\" 
                DataKeyNames=\"ID\" DataSourceID=\"reconcileDataSource\" >
                <Columns>
                    <asp:CommandField ShowEditButton=\"True\" />
                    <asp:BoundField DataField=\"Name\" HeaderText=\"Name\" SortExpression=\"Name\" ReadOnly=\"true\" />
                    <asp:BoundField DataField=\"Description\" HeaderText=\"Description\" SortExpression=\"Description\" ReadOnly=\"true\"/>
                    <asp:BoundField DataField=\"last_known_location\" HeaderText=\"Last Known Location\" SortExpression=\"last_known_location\" ReadOnly=\"true\" />
                    <asp:TemplateField HeaderText=\"Status\">
                        <ItemTemplate>
                            <asp:Label ID=\"lblStatus\" runat=\"server\" Text=\'<%# evalStatus(Eval(\"Stat\")) %>\'></asp:Label></ItemTemplate><EditItemTemplate>
                            <asp:DropDownList ID=\"ddlReconcileStatus\" runat=\"server\" OnSelectedIndexChanged=\"ddlReconcileStatus_SelectedIndexChanged\" AutoPostBack=\"true\" >
                                <asp:ListItem Value=\"3\" Text=\"Allocated\"></asp:ListItem><asp:ListItem Value=\"4\" Text=\"Transferred\"></asp:ListItem></asp:DropDownList></EditItemTemplate></asp:TemplateField><asp:TemplateField HeaderText=\"Transfer Location\">
                        <EditItemTemplate>
                            <asp:DropDownList ID=\"ddlTransferLocation\" runat=\"server\" 
                                DataSourceID=\"ddlTransferLocationDataSource\" DataTextField=\"Name\" 
                                DataValueField=\"ID\" Enabled=\"false\" ></asp:DropDownList>
                        <asp:SqlDataSource 
                                ID=\"ddlTransferLocationDataSource\" runat=\"server\" 
                                ConnectionString=\"<%$ ConnectionStrings:ConnectionString %>\" 
                                SelectCommand=\"SELECT [ID], [Name] FROM [TransferLocation]\">
                        </asp:SqlDataSource>
                        </EditItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </ContentTemplate>
    </asp:UpdatePanel>
    
已邀请:
        首先,我很困惑您的Update Command仅采用两个参数:
UpdateCommand=\"UPDATE item SET Stat = @Status WHERE ItemID = @ID\"
而您的参数集合包含六个参数:
<UpdateParameters>
    <asp:Parameter Name=\"ID\" />
    <asp:Parameter Name=\"TransType\" Type=\"String\" />
    <asp:Parameter Name=\"LocationID\" Type=\"String\" />
    <asp:Parameter Name=\"Description\" Type=\"String\" />
    <asp:Parameter Name=\"Status\" Type=\"String\" />
    <asp:Parameter Name=\"TransferLocation\" Type=\"String\" />
</UpdateParameters>
实际上,问题在于您要在
SQLDataSource.ItemUpdating
事件中传递参数,但必须在
GridView
更新事件中传递这些参数。     

要回复问题请先登录注册