Webブラウザを介して顧客による注文を変更する方法を見つけようとしています。顧客は、製品ID(キー)、製品名、製品の価格、および必要な数量を含むアイテムを注文します。OLDアイテムを古い数量に置き換え、同じアイテムの数量が異なるため、基本的にクリックしてアイテムを選択し、購入したい2つの異なる数量を配置することで注文を変更する方法を知りたいです。ショッピングカートには購入したアイテムが入っているので、ショッピングカートからOrderItemを破棄して、それを再作成するにはどうすればよいか考えていました。
私のコードがすでにショッピングカートに入っているキーを見つけたら、それを破棄して、新しいQuanitity(Webアプリのテキストボックス)で再作成する必要があります。
protected void btnOrder_Click(object sender, EventArgs e)
{
//Check for Shoppingcart object
// Create first if not there
if (Session["cart"] == null)
Session["cart"] = new ShoppingCart();
int quantity = 0;
// make sure there is text
if (txtQuantity.Text.Trim().Length != 0)
{
quantity = int.Parse(txtQuantity.Text);
if (((ShoppingCart)Session["cart"]).
keyExists(int.Parse(productID.Text)))
{
//Here I should Destroy the current item that exists and replace with new one
}
else // This is a new item
{
// Make the item
OrderItem item = new OrderItem(
int.Parse(productID.Text), productName.Text,
double.Parse(productPrice.Text),
int.Parse(txtQuantity.Text));
// add to cart
((ShoppingCart)Session["cart"]).addToCart(item);
}
// How does this work? Who is sender?
this.btnReturn_Click(sender, e);
}
else
{
Response.Write("Nothing Ordered<br>You must order some of the product or return to the Catalog");
}
これがOrderItemオブジェクトです
public class OrderItem
{
private int productID;
private string prodName;
private double unitPrice;
private int quantityOrdered;
private string exceptionStr;
public OrderItem(int id, string name, double price, int quantity)
{
prodName = name;
exceptionStr = "Numeric data must not be negative";
if ( id < 0 || price < 0 || quantity < 0)
{
throw new System.ArgumentException(exceptionStr);
}
else
{
productID = id;
unitPrice = price;
quantityOrdered = quantity;
}
}
#region Public Properties
public int ProductID
{
get
{
return productID;
}
}
public string ProductName
{
get
{
return prodName;
}
}
public double UnitPrice
{
get
{
return unitPrice;
}
}
public int QuantityOrdered
{
get
{
return quantityOrdered;
}
set
{
if( value < 0 )
{
throw new ArgumentException(exceptionStr);
}
else
{
quantityOrdered = value;
}
}
}
#endregion
}
これがあなたの閲覧のためのShoppingcartです:
public class ShoppingCart : IEnumerable
{
private SortedList theCart;
public ShoppingCart() {
theCart = new SortedList();
} // end of Constructor
public bool HasItems {
get{
bool hasItems = false;
if( theCart.Count > 0 )
hasItems = true;
return hasItems;
}
set {
// ignore this is read only
}
} // end of HasItems
public void addToCart(OrderItem item) {
theCart.Add(item.ProductID, item);
}// AddToCaArt
/// <summary>
/// deletes item that is passed
/// </summary>
/// <param name="item"></param>
public void deleteFromCart(OrderItem item)
{
theCart.Remove(item.ProductID);
} // end deleteFromCart
/// <summary>
/// deletes the item with this id key
/// </summary>
/// <param name="id"></param>
public void deleteFromCart(int id)
{
theCart.Remove(id);
} // end deleteFromCart
public OrderItem[] getCartContents()
{
// need to create stuff
OrderItem[] stuff = null;
theCart.Values.CopyTo(stuff, 0);
return (stuff);
} // end getCartContents
public bool keyExists(int ID) {
return theCart.ContainsKey(ID);
}// end keyExists
public ICollection Values
{
get
{
return theCart.Values;
}
}
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
return theCart.GetEnumerator();
}
#endregion
}