在asp.net中利用session做购物车-DataTable篇

构想: 在session里定义一个datatable,用作购物车。
A.aspx 传送一个商品ID给 B.aspx , B.aspx 显示购物车的相关资料。

我觉得用datatable做购物车思路比较简单,当然还有用arraylist,如petshop,
大家又喜欢那种呢? 是否还有更好的方式呢?
欢迎大家讨论!

B.aspx 代码如下,已通过测试,可以运行。

<% @ Page Language="C#"  %>
<% @ import Namespace="System.Data"  %>
<% @ import Namespace="System.Data.OleDb"  %>
< script  runat ="server" >

DataTable Cart 
= new DataTable();
DataRow dr;


private 
void Page_Load(Object Src,EventArgs E)
{
string ls_pid;

//在seesion中是否已经购物车,如果没有就建立
if(Session["ShopingCart"]==null)
{

Cart.Columns.Add(
new DataColumn("Pid",typeof(string)));
Cart.Columns.Add(
new DataColumn("pname",typeof(string)));
Cart.Columns.Add(
new DataColumn("qty",typeof(string)));
Cart.Columns.Add(
new DataColumn("pprice",typeof(string)));

Session[
"ShoppingCart"]=Cart;

}

else
{

Cart
=(DataTable)Session["ShoppingCart"];
}




//是否有货品ID传过来,有就添加然后显示购物车,没有就直接显示购物车
if(Request.QueryString["pid"]!=null)
{
ls_pid
=Request.QueryString["pid"]; 
additem(ls_pid);
}


showitem();

}



private 
void additem(string itemid)
{

string ls_sql
="select ProductId,PName,PPrice from Product where Pstatus='Y' and ProductId= '" + itemid + "'";
string cnn
=ConfigurationSettings.AppSettings["oledb"];

OleDbConnection myConnection 
= new OleDbConnection(cnn);
OleDbCommand myCommand 
= new OleDbCommand(ls_sql,myConnection);
myConnection.Open();
OleDbDataReader itemdr 
= myCommand.ExecuteReader();

if(itemdr.Read())
{
dr 
= Cart.NewRow();
dr
= Cart.NewRow();
dr[
0]=itemdr["ProductId"];
dr[
1]=itemdr["PName"];
dr[
2]="1";
dr[
3]=itemdr["PPrice"];
Cart.Rows.Add(dr);
}



}


private 
void showitem()
{
DataList1.RepeatDirection 
= RepeatDirection.Horizontal;
DataList1.RepeatLayout 
= RepeatLayout.Table;
DataList1.RepeatColumns
= 1 ;


DataList1.DataSource
=Cart;
DataList1.DataBind();
}


</ script >
< html >
< head >
</ head >
< body >
< form  runat ="server" >
< asp:DataList  id ="DataList1"  runat ="server"  BorderStyle ="None"  GridLines ="Both"  BorderWidth ="1px"  BorderColor ="#CC9966"  BackColor ="White"  CellPadding ="4" >
< ItemStyle  forecolor ="#330099"  backcolor ="White" ></ ItemStyle >
< FooterStyle  forecolor ="#330099"  backcolor ="#FFFFCC" ></ FooterStyle >
< HeaderStyle  font-bold ="True"  forecolor ="#FFFFCC"  backcolor ="#990000" ></ HeaderStyle >
< SelectedItemStyle  font-bold ="True"  forecolor ="#663399"  backcolor ="#FFCC66" ></ SelectedItemStyle >
< ItemTemplate >
< table  width ="500" >
< tbody >
< tr >
< td >
<% # DataBinder.Eval(Container.DataItem,"pid") %> </ td >
< td >
<% # DataBinder.Eval(Container.DataItem,"pname") %> </ td >
< td >
<% # DataBinder.Eval(Container.DataItem,"qty") %> </ td >
< td >
<% # DataBinder.Eval(Container.DataItem,"pprice") %> </ td >
</ tr >
</ tbody >
</ table >
</ ItemTemplate >
</ asp:DataList >
</ form >
</ body >
</ html >
 
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值