我用的是prototype這個js庫!所以關於這個東西我就帶過,不瞭解proto的可以去園子裡找相關的資料!
首先說添加購物車的東東,用來存放購物車我用的是session,裡面存放Arraylist。因為你不知道客戶要購買多少東東。所以你不能用數組這種定長的東東。
這裡要考慮的問題:
1、如果添加購車
2、如果將重複的物品累計到一起(如我購買了一瓶洗髮水,我再購買一瓶就要累積到2)
3、如何即時的和資料庫互動判斷庫存是否充足。(使用ajax)
其實全部的操作都是使用了ajax操作!
我們用Session["orders"]來存放購物車
來看獲得購物車的方法:/**//// <summary>
/// 擷取購物車中的產品
/// author:jake
/// bt:080313
/// </summary>
/// <param name="pName">產品名稱</param>
/// <param name="pId">產品ID</param>
/// <param name="mPrice">市場價格</param>
/// <param name="sPrice">事事旺價格</param>
/// <param name="pNum">產品數量</param>
/// <returns>購物車數組</returns>
/// 集合形式為:[產品ID,產品名稱,市場價格,網站價格,數量]
/// session形式為:集合形式
public ArrayList getCart(string orders)
{
ArrayList cartal = new ArrayList();
if (Session["orders"] != null)
{
cartal = (ArrayList)Session["orders"];
}
else
{
cartal.Clear();
}
string[] ss = orders.Split(',');
if (cartal.Count == 0)
{
cartal.Add(orders);
}
else
{
bool r = false;
for (int i = 0; i < cartal.Count; i++)
{
string[] sc = cartal[i].ToString().Split(',');
if (ss[0].ToString() == sc[0].ToString()) //判斷是否重複訂單
{
sc[4] = Convert.ToString(int.Parse(sc[4].ToString()) + int.Parse(ss[4].ToString()));
cartal[i] = sc[0] + "," + sc[1] + "," + sc[2] + "," + sc[3] + "," + sc[4];
r = false;
break;
}
else
{
r = true;
}
}
if (r)
{
cartal.Add(orders);
}
}
return cartal;
}