首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqldatasource update()不工作

sqldatasource update()不工作
EN

Stack Overflow用户
提问于 2011-04-13 00:05:07
回答 3查看 7.3K关注 0票数 1

我正在使用sqldatasource执行更新。

我有一个Transactions表,其中存储用户选择购买的各个项目(项目名称、项目价格、orderID等)

我有一个Orders表,其中存储了订单值(帐户名、订单总数等)

下面是我在.aspx页面中定义的SqlDataSource:

代码语言:javascript
复制
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
        ConnectionString="<%$ ConnectionStrings:NH_SWAGConnectionString %>" 

        InsertCommand="INSERT INTO [tblOrders] ([OrderDate], [OrderTotal], [OrderAccount], [OrderCostCentre]) VALUES (@OrderDate, @OrderTotal, @OrderAccount, @OrderCostCentre); SELECT @OrderNewID = SCOPE_IDENTITY()" 
        SelectCommand="SELECT * FROM [tblOrders]" 
        UpdateCommand="UPDATE [tblOrders] SET [OrderDate] = @OrderDate, [OrderTotal] = @OrderTotal, [OrderAccount] = @OrderAccount, [OrderCostCentre] = @OrderCostCentre WHERE [OrderID] = @original_OrderID AND [OrderDate] = @original_OrderDate AND [OrderTotal] = @original_OrderTotal AND [OrderAccount] = @original_OrderAccount AND [OrderCostCentre] = @original_OrderCostCentre" 
        OldValuesParameterFormatString="original_{0}" 

        oninserting="SqlDataSource2_Inserting"
        oninserted="SqlDataSource2_Inserted" onupdated="SqlDataSource2_Updated" 
        onupdating="SqlDataSource2_Updating">

        <InsertParameters>
            <asp:Parameter Direction="Output" Name="OrderNewId" Type="Int32" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="OrderDate" Type="DateTime" />                                
            <asp:Parameter Name="OrderAccount" Type="String" />
            <asp:Parameter Name="OrderCostCentre" Type="String" />
            <asp:Parameter Name="original_OrderID" Type="Int32" />
            <asp:Parameter Name="original_OrderDate" Type="DateTime" />
            <asp:Parameter Name="original_OrderTotal" Type="Decimal" />
            <asp:Parameter Name="original_OrderAccount" Type="String" />
            <asp:Parameter Name="original_OrderCostCentre" Type="String" />
            <%--<asp:ControlParameter ControlID="lblOrderTotal" Name="OrderTotal" 
                PropertyName="Text" />--%>
        </UpdateParameters>
    </asp:SqlDataSource>

您可以看到,我阻止了将OrderID附加到文本框的代码。我这样做是因为那部分不起作用。然后,我尝试修改代码隐藏中的参数:

代码语言:javascript
复制
        //Update Order Table with Total of Order
    //SqlDataSource2.UpdateParameters["OrderTotal"].DefaultValue = (string)OrderTotal.ToString();        
    SqlDataSource2.UpdateParameters.Add("OrderTotal", (string)OrderTotal.ToString());
    SqlDataSource2.Update();

页面不会出错,但Orders Db中的update to OrderTotal不会更新。它停留在'0‘。有人能为我解释一下吗?我已经试了两天了。是的,这是我最后一次使用SqlDataSource -似乎每个人都推荐了一种不同的方法(DAC?) -下一个项目我将遵循每个人的建议:)

感谢所有人

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-02 03:57:40

好吧,我不确定为什么它不会自动更新,但我只是在手动更新之前设置了更新命令,这似乎起到了作用:

代码语言:javascript
复制
SqlDataSource2.UpdateCommand = "UPDATE tblOrders SET [OrderTotal] = " + (string)OrderTotal.ToString() + " WHERE OrderID = " + OrderNewID;
票数 0
EN

Stack Overflow用户

发布于 2012-10-25 21:46:25

试试这个:

代码语言:javascript
复制
protected void SqlDataSource2_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
    e.Command.Parameters[0].Value = OrderTotal;
    e.Command.Parameters[1].Value = OrderNewId;
}

这对我来说是有效的。

票数 2
EN

Stack Overflow用户

发布于 2011-04-13 00:38:57

将OrderTotal添加到参数列表中,然后在更新前在代码中执行此操作:

代码语言:javascript
复制
SqlDataSource2.UpdateParameters["OrderTotal"].DefaultValue = OrderTotal.ToString();
SqlDataSource2.Update();

使用DefaultValue属性将此值传递给查询。

或者,点击更新事件,并将新值添加到值的事件参数集合中。这将被传递到后端。

HTH。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5638277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档