构想: 在session里定义一个datatable,用作购物车。 我觉得用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 > | |
在asp.net中利用session做购物车-DataTable篇
最新推荐文章于 2019-01-14 15:38:00 发布