【发布时间】:2011-11-10 16:49:17
【问题描述】:
我遇到了这个问题,一旦我计算出将(数量 * 价格)显示为来自 ShoppingCart 的总计,它设法显示用户购买的总项目的总计,但我无法在列中更新或删除当我立即更新它时,给我这个错误“关键字'WHERE'附近的语法不正确”
我将在此处提供代码:
<asp:GridView ID="GridView2" runat="server" AllowPaging="True"
AutoGenerateColumns="False" CellPadding="4"
DataSourceID="SqlDataSource2" ForeColor="#333333" GridLines="None"
AllowSorting="True">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="ProductID" HeaderText="ProductID"
SortExpression="ProductID" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:BoundField DataField="InsertDate" HeaderText="InsertDate"
SortExpression="InsertDate" />
<asp:BoundField DataField="Quantity" HeaderText="Quantity"
SortExpression="Quantity" />
<asp:BoundField DataField="Price" HeaderText="Price"
SortExpression="Price" />
<asp:BoundField DataField="OrderID" HeaderText="OrderID"
SortExpression="OrderID" />
<asp:BoundField DataField="Total" HeaderText="Total"
SortExpression="Total" />
</Columns>
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
DeleteCommand="DELETE FROM [ShoppingCart] WHERE [CartID] = @original_CartID AND [ProductID] = @original_ProductID AND [UserName] = @original_UserName AND [InsertDate] = @original_InsertDate AND [Quantity] = @original_Quantity AND [Price] = @original_Price AND [OrderID] = @original_OrderID AND [Total]= @original_Total"
InsertCommand="INSERT INTO [ShoppingCart] ([ProductID], [UserName], [InsertDate], [Quantity], [Price], [OrderID], [Total]) VALUES (@ProductID, @UserName, @InsertDate, @Quantity, @Price, @OrderID, @Total)"
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT [ProductID], [UserName], [InsertDate], [Quantity], [Price], [OrderID], (Quantity * Price) As Total FROM [ShoppingCart]"
UpdateCommand="UPDATE [ShoppingCart] SET [ProductID] = @ProductID, [UserName] = @UserName, [InsertDate] = @InsertDate, [Quantity] = @Quantity, [Price] = @Price, [OrderID] = @OrderID, [Total]= @Total, WHERE [CartID] = @original_CartID AND [ProductID] = @original_ProductID AND [UserName] = @original_UserName AND [InsertDate] = @original_InsertDate AND [Quantity] = @original_Quantity AND [Price] = @original_Price AND [OrderID] = @original_OrderID AND [Total]= @Total">
<DeleteParameters>
<asp:Parameter Name="original_CartID" Type="Int32" />
<asp:Parameter Name="original_ProductID" Type="Int32" />
<asp:Parameter Name="original_UserName" Type="String" />
<asp:Parameter Name="original_InsertDate" Type="DateTime" />
<asp:Parameter Name="original_Quantity" Type="Int32" />
<asp:Parameter Name="original_Price" Type="Decimal" />
<asp:Parameter Name="original_OrderID" Type="Int32" />
<asp:Parameter Name="original_Total" Type="Decimal" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="ProductID" />
<asp:Parameter Name="UserName" />
<asp:Parameter Name="InsertDate" />
<asp:Parameter Name="Quantity" />
<asp:Parameter Name="Price" />
<asp:Parameter Name="OrderID" />
<asp:Parameter Name="Total" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="ProductID" Type="Int32" />
<asp:Parameter Name="UserName" Type="String" />
<asp:Parameter Name="InsertDate" Type="DateTime" />
<asp:Parameter Name="Quantity" Type="Int32" />
<asp:Parameter Name="Price" Type="Decimal" />
<asp:Parameter Name="OrderID" Type="Int32" />
<asp:Parameter Name="Total" Type="Decimal" />
<asp:Parameter Name="original_CartID" Type="Int32" />
<asp:Parameter Name="original_ProductID" Type="Int32" />
<asp:Parameter Name="original_UserName" Type="String" />
<asp:Parameter Name="original_InsertDate" Type="DateTime" />
<asp:Parameter Name="original_Quantity" Type="Int32" />
<asp:Parameter Name="original_Price" Type="Decimal" />
<asp:Parameter Name="original_OrderID" Type="Int32" />
<asp:Parameter Name="original_Total" Type="Decimal" />
</UpdateParameters>
</asp:SqlDataSource>
请指导我,我不知道错误是什么意思。这是给可以在购物车中更新或删除的管理员
【问题讨论】:
-
在
... [Total]= @Total, WHERE之前不是多了一个逗号吗? -
@AlexK。你为什么不把它作为答案?
-
它现在显示不同的列名“总计”无效。我想用总计列名替换什么,因为它是数量 * 价格。它可以显示总计,但在编辑时数量列看起来像这样......
-
当我将 Total 变量更改为 Quantity * Price 时,错误变成这样 '*' 附近的语法不正确。必须声明标量变量“@original_CartID”。请在这方面帮助我。谢谢
标签: asp.net sql-server shopping-cart sql-update aspxgridview