【发布时间】:2011-04-12 16:05:06
【问题描述】:
我正在使用 sqldatasource 执行更新。
我有一个 Transactions 表,用于存储用户选择购买的单个商品(商品名称、商品价格、订单 ID 等)
我有一个订单表,其中存储订单的值(帐户名称、订单总额等)
这是我在 .aspx 页面中定义的 SqlDataSource:
<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 附加到文本框的代码。我这样做是因为那部分不起作用。然后我尝试修改代码隐藏中的参数:
//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 中 OrderTotal 的更新没有更新。它保持在“0”。任何人都可以为我阐明这一点吗?我已经尝试了2天了。是的,这是我最后一次使用 SqlDataSource - 似乎每个人都推荐不同的方法(DAC?) - 下一个项目我将遵循每个人的建议 :)
谢谢大家
【问题讨论】:
标签: c# asp.net sqldatasource