在asp.net中利用session做购物车-DataTable篇
原创:小菜一碟
构想:在session里定义一个datatable,用作购物车。
A.aspx传送一个商品ID给B.aspx,B.aspx显示购物车的相关资料。
我觉得用datatable做购物车思路比较简单,当然还有用arraylist,如petshop,
大家又喜欢那种呢?是否还有更好的方式呢?
欢迎大家讨论!
B.aspx代码如下,已通过测试,可以运行。
<%@PageLanguage="C#"%>
<%@importNamespace="System.Data"%>
<%@importNamespace="System.Data.OleDb"%>
<scriptrunat="server">
DataTableCart=newDataTable();
DataRowdr;
privatevoidPage_Load(ObjectSrc,EventArgsE)
{
stringls_pid;
//在seesion中是否已经购物车,如果没有就建立
if(Session["ShopingCart"]==null)
{
Cart.Columns.Add(newDataColumn("Pid",typeof(string)));
Cart.Columns.Add(newDataColumn("pname",typeof(string)));
Cart.Columns.Add(newDataColumn("qty",typeof(string)));
Cart.Columns.Add(newDataColumn("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();
}
privatevoidadditem(stringitemid)
{
stringls_sql="selectProductId,PName,PPricefromProductwherePstatus='Y'
andProductId='"+itemid+"'";
stringcnn=ConfigurationSettings.AppSettings["oledb"];
OleDbConnectionmyConnection=newOleDbConnection(cnn);
OleDbCommandmyCommand=newOleDbCommand(ls_sql,myConnection);
myConnection.Open();
OleDbDataReaderitemdr=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);
}
}
privatevoidshowitem()
{
DataList1.RepeatDirection=RepeatDirection.Horizontal;
DataList1.RepeatLayout=RepeatLayout.Table;
DataList1.RepeatColumns=1;
DataList1.DataSource=Cart;
DataList1.DataBind();
}
</script>
<html>
<head>
</head>
<body>
<formrunat="server">
<asp:DataListid="DataList1"runat="server"BorderStyle="None"GridLines="Both"BorderWidth="1px"BorderColor="#CC9966"BackColor="White"CellPadding="4">
<ItemStyleforecolor="#330099"backcolor="White"></ItemStyle>
<FooterStyleforecolor="#330099"backcolor="#FFFFCC"></FooterStyle>
<HeaderStylefont-bold="True"forecolor="#FFFFCC"backcolor="#990000"></HeaderStyle>
<SelectedItemStylefont-bold="True"forecolor="#663399"backcolor="#FFCC66"></SelectedItemStyle>
<ItemTemplate>
<tablewidth="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>