我正在使用sqldatasource执行更新。
我有一个Transactions表,其中存储用户选择购买的各个项目(项目名称、项目价格、orderID等)
我有一个Orders表,其中存储了订单值(帐户名、订单总数等)
下面是我在.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中的update to OrderTotal不会更新。它停留在'0‘。有人能为我解释一下吗?我已经试了两天了。是的,这是我最后一次使用SqlDataSource -似乎每个人都推荐了一种不同的方法(DAC?) -下一个项目我将遵循每个人的建议:)
感谢所有人
发布于 2011-05-02 03:57:40
好吧,我不确定为什么它不会自动更新,但我只是在手动更新之前设置了更新命令,这似乎起到了作用:
SqlDataSource2.UpdateCommand = "UPDATE tblOrders SET [OrderTotal] = " + (string)OrderTotal.ToString() + " WHERE OrderID = " + OrderNewID;发布于 2012-10-25 21:46:25
试试这个:
protected void SqlDataSource2_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters[0].Value = OrderTotal;
e.Command.Parameters[1].Value = OrderNewId;
}这对我来说是有效的。
发布于 2011-04-13 00:38:57
将OrderTotal添加到参数列表中,然后在更新前在代码中执行此操作:
SqlDataSource2.UpdateParameters["OrderTotal"].DefaultValue = OrderTotal.ToString();
SqlDataSource2.Update();使用DefaultValue属性将此值传递给查询。
或者,点击更新事件,并将新值添加到值的事件参数集合中。这将被传递到后端。
HTH。
https://stackoverflow.com/questions/5638277
复制相似问题