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

博客涉及ASP.NET相关内容,包含session、string、server、table等信息技术元素,这些元素在ASP开发中具有重要作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构想: 在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>
 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值