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

来源:互联网 发布:惠普1415网络链接 编辑:程序博客网 时间:2024/06/07 12:57

构想: 在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>
 
原创粉丝点击