mình mới viết xong nên mạn phép các anh em xem xong rồi cho ý kiến.

1.giỏ hàng
chúng ta phải tạo 1 lớp đối tượng giỏ hàng rồi sau đó dựa vào lớp này để tạo ra giỏ hàng.

code:

public class KhungGioHang
{
private string MaCay;
private string TenCay;
private short SoLuong;
private float DonGia;
private float TongGia;
public KhungGioHang(string _MaCay, string _TenCay, short _SoLuong, float _DonGia)
{
MaCay = _MaCay;
TenCay = _TenCay;
DonGia = _DonGia;
SoLuong = _SoLuong;
}

public string MaCayP
{
set { MaCay = value; }
get { return MaCay; }
}
public string TenCayP
{
set { TenCay = value; }
get { return TenCay; }
}
public short SoLuongP
{
set { SoLuong = value; }
get { return SoLuong; }
}
public float DonGiaP
{
set { DonGia = value; }
get { return DonGia; }
}
public float TongGiaP
{
set { TongGia = value; }
get { return (DonGia * SoLuong); }
}

}

xong,sau đó là code giỏ hàng

public class GioHang
{
private Hashtable _table = new Hashtable();
private float _tong = 0;
private short _SoLuong=0;
public void Them(string MaCay, string Name, short SoLuong, float DonGia)
{
// Nếu sản phẩm không có trong giỏ hàng thì thêm hàng vào giỏ
if (_table[MaCay] == null)
{
KhungGioHang hd = new KhungGioHang(MaCay, Name, SoLuong, DonGia);
_table.Add(MaCay, hd);
_tong += hd.TongGiaP;
_SoLuong += hd.SoLuongP;
}

//Nếu đã có sản phẩm trong giỏ thì cập nhật thêm sản phẩm
else
{
KhungGioHang hd = (KhungGioHang)_table[MaCay];
hd.SoLuongP += SoLuong;
hd.TongGiaP += hd.DonGiaP;
_tong += hd.DonGiaP;
_SoLuong += hd.SoLuongP;
}
}
public void Xoa(string MaCay)
{
if (_table[MaCay] != null)
{
KhungGioHang row = (KhungGioHang)_table[MaCay];
_tong -= row.TongGiaP;
_SoLuong -= row.SoLuongP;
_table.Remove(MaCay);
}
}
public void Sua(string MaCay, short newQty)
{
if (_table[MaCay] != null)
{
KhungGioHang row = (KhungGioHang)_table[MaCay];
_tong -= row.TongGiaP;
_SoLuong -= row.SoLuongP;
row.SoLuongP = newQty;
_tong += row.TongGiaP;
_SoLuong += row.SoLuongP;
}
}
public ICollection Table
{
get { return _table.Values; }
}
public float TotalPrice
{
get { return _tong; }
}
public short SoLuong
{
get { return _SoLuong; }
}

}

trên đây là code của giỏ hàng
giờ đến sử dụng nó :
các bạn tạo 1 trang sản phẩm và trong sự kiện click nút mua hàng
ở đây là datalist với sự kiện ItemCommand

string ma_cay = (string)DataList1.DataKeys[e.Item.ItemIndex];
ca.MaCay = ma_cay;
DataRow ca_ct = ca.CT();
string tencay = (string)ca_ct["TenCay"];
float don_gia = float.Parse(ca_ct["DonGia"].ToString());
if (Session["GioHang"] == null)
{
Session["GioHang"] = new GioHang();
}
GioHang customer = (GioHang)Session["GioHang"];
customer.Them(ma_cay, tencay, 1, don_gia);
//đến đây là xong,bên dưới là code phụ thôi, để hiển thị cho khách hàng thấy số sản //phẩm đã mua và số tiền
CayCanh.TimKiem tk = new CayCanh.TimKiem();
Control usercontrol = Page.Form.FindControl("GioHangCuaToi1");
HyperLink socay = (HyperLink)tk.Tim("socay", usercontrol);
HyperLink dongia = (HyperLink)tk.Tim("dongia", usercontrol);
if (dongia != null)
{
dongia.Text = string.Format("{0:##,# (VNĐ)}", customer.TotalPrice);
dongia.Visible = true;
}
if (socay != null)
{
socay.Text = String.Format("{0} (cây)", customer.SoLuong.ToString());

các bạn có thể xem chi tiết code trong file đính kèm

http://www.mediafire.com/?ew0wksbah1tsh49

anh em nào gặp trục trặc hãy đăng câu hỏi, mình sẽ trả lời hết trong giới hạn hiểu biết của mình.