在上一部分,我们介绍了如何创建一个简单的购物车类,并实现了添加商品、删除商品和查看购物车商品的功能。接下来,我们将在此基础上继续探讨如何实现购物车的其他功能,如修改商品数量、计算总价和排序商品等。
4.修改商品数量
在购物车中,用户可能需要修改已添加商品的数量。为此,我们可以在购物车类中添加一个修改商品数量的方法。以下是如何实现这个功能的代码:
public void alterQuantity(StatClass order, int newQuantity)
{
if (order != null && newQuantity >0)
{
order.SpQuantity = newQuantity;
CartOrders[order.ShangPinID] = order;
}
}
5.计算总价
计算购物车中所有商品的总价是很重要的一个功能。我们可以在购物车类中添加一个计算总价的方法,如下所示:
public decimal calculateTotalCost()
{
decimal total =0;
foreach (DictionaryEntry entry in CartOrders)
{
StatClass order = (StatClass)entry.Value;
total += order.Price * order.Quantity;
}
return total;
}
6.排序商品
根据用户需求,我们可能需要对购物车中的商品进行排序。在此,我们提供一个按商品总价升序排序的方法:
public void sortByTotalPrice()
{
ICollection<StatClass> orders = CartOrders.Values;
orders.Sort(new Comparison<StatClass>(CompareByTotalPrice));
}
private int CompareByTotalPrice(StatClass a, StatClass b)
{
decimal totalA = a.Price * a.Quantity;
decimal totalB = b.Price * b.Quantity;
return totalA.CompareTo(totalB);
}
7.实现页面交互
为了使购物车功能在网页上生效,我们需要在网页上添加相应的控件和事件处理程序。以下是一个简单的示例,展示了如何在ASP.NET网页中实现购物车功能:
```html
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShoppingCart.aspx.cs" Inherits="System.Web.UI.Page" %>
购物车示例
购物车
<% if (Session["Cart"] != null) { ShoppingCart cart = (ShoppingCart)Session["Cart"]; %>
- <%= order.SpName %> - <%= order.SpPrice.ToString("N") %>元 - <%= order.SpQuantity %>件
<%= cart.calculateTotalCost().ToString("N") %>元总价<% } else { %>
请先添加商品到购物车
<% } %>
<%
if (Request.Form["action"] == "add")
{
int itemId = int.Parse(Request.Form["itemId"]);
int quantity = int.Parse(Request.Form["quantity"]);
cart.addMerchandise(itemId, quantity);
Response.Redirect("ShoppingCart.aspx");
}
if (Request.Form["action"] == "delete")
{
int itemId = int.Parse(Request.Form["itemId"]);
cart.delMerchandise(itemId);
Response.Redirect("ShoppingCart.aspx");
}
if (Request.Form["action"] == "alter")
{
int itemId = int.Parse(Request.Form["itemId"]);