`
taotaogo1980
  • 浏览: 82324 次
社区版块
存档分类
最新评论

购物车的实现及结算处理[转]

阅读更多

    注:此文章来自CSDN。觉得代码挺清晰的,而且可能很多人会用到购物车代码,就摘过来了。

标题 购物车的实现及结算处理 选择自 greystar 的 Blog <br>关键字 购物车的实现及结算处理 <br><br>本示例利用Session对象来实现一个简单的购物车。主要用于教学演示。

Book类<br>此类主是代表购物车的一本书<br>using System;

namespace CartTest<br>{<br>/// <summary><br>/// Books 的摘要说明。<br>/// </summary><br>public class Book<br>{<br> string bookid;<br> string title;<br> decimal price;<br> int num;

<br> public Book()<br> {<br> }

/// <summary><br> /// ID<br> /// </summary><br> public string BookID<br> {<br> get{return bookid;}<br> set{bookid=value;}<br> }<br> /// <summary><br> /// 书名<br> /// </summary><br> public string Title<br> {<br> get{return title;}<br> set{title=value;}<br> }<br><br> /// <summary><br> /// 金额<br> /// </summary><br> public decimal Price<br> {<br> get{return price;}<br> set{price=value;<br> sum=price*num;<br> }<br> }<br> /// <summary><br> /// 数量<br> /// </summary><br> public int Num<br> {<br> get{return num;}<br> set{num=value;<br> sum=price*num;<br> }<br> }<br> decimal sum=0m;<br> //一种书的总金额<br> public decimal Sum<br> {<br> get{return sum;}<br> set{sum=value;}<br> }<br>}

}

//购物车集合<br>//Books 用户所有订购的书 ,实现IEnumerable接口,我们可以将其绑定到datagrid控件<br>using System;<br>using System.Collections;<br>namespace CartTest<br>{<br>/// <summary><br>/// <br>/// </summary><br>public class Books :IEnumerable <br>{<br> Hashtable ht=null;<br> public Books()<br> {<br> ht=new Hashtable();<br><br> }

public Books(int count)<br> {<br> ht=new Hashtable(count);<br> }

public void Add(Book b)<br> {<br> //如果集合中有相同ID的书,则对书的数量进行相加<br> if(ht.ContainsKey(b.BookID))<br> {<br>((Book)ht[b.BookID]).Num=((Book)ht[b.BookID]).Num+b.Num;<br><br> }<br> else<br> {<br> ht.Add(b.BookID,b);<br> }<br> }

public void Remove(string bookid)<br> {<br> if(ht.ContainsKey(bookid))<br> ht.Remove(bookid);<br> }<br>//统计有多少种书<br> public int Count<br> {<br> get<br> {<br> return ht.Count;<br> }<br> }

public void Clear()<br> {<br> ht.Clear();<br> }

public Book this[string bookid]<br> {<br> get<br> {<br> if(ht.ContainsKey(bookid))<br> return (Book)ht[bookid];<br> return null;<br> }<br> }<br> #region IEnumerable 成员

public IEnumerator GetEnumerator()<br> {<br> // TODO: 添加 Books.GetEnumerator 实现<br> return ht.Values.GetEnumerator();<br> }

#endregion<br>}<br>}



//此页面主要是用于显示所有的书。用的是DataList来自定义显示模板。但是实际上可以使用DataGrid来处理。DataGrid也可以实现分页功能及自定义模板。只要将dDatagrid设为一个模板列,然后将DataList里的模板列代码Copy过去即可。<br>//此页面中每本书都要显示封面。这个问题我们可以通过一个过渡页来处理图片数据

<%@ Page language="c#" Codebehind="BookList.aspx.cs" AutoEventWireup="false" Inherits="CartTest.BookList" %><br><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><br><HTML><br><HEAD><br> <title>BookList</title><br> <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"><br> <meta content="C#" name="CODE_LANGUAGE"><br> <meta content="JavaScript" name="vs_defaultClientScript"><br> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"><br> <LINK href="http://localhost/CartTest/StyleSheet1.css" type="text/css" rel="stylesheet"><br></HEAD><br><body MS_POSITIONING="GridLayout"><br> <form id="Form1" method="post" runat="server"><br> <asp:datalist id="DataList1" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 56px" runat="server"<br> DataKeyField="BookGuid" Width="650"><br> <ItemTemplate><br> <TABLE id="Table14" cellSpacing="1" cellPadding="1" border="0"><br> <TR><br> <TD><br> <a href='<%# "BookView.aspx?BookID="+DataBinder.Eval(Container, "DataItem.BookGuid") %>'><br> <!--imageview.aspx页面专用来处理书的图片--> <asp:Image id=Image1 runat="server" Width="120px" Height="144px" ImageUrl='<%# "ImageView.aspx?imgid="+DataBinder.Eval(Container, "DataItem.BookGuid") %>'><br> </asp:Image><br> </a><br> </TD><br> <TD vAlign="top"><br> <TABLE id="Table15" cellSpacing="1" cellPadding="1" width="300" border="1"><br> <TR><br> <TD>书名:<br> <asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.BookTitle") %>'><br> </asp:Label></TD><br> </TR><br> <TR><br> <TD>图书简介:<br> <asp:Label id=Label2 style="OVERFLOW: hidden; TEXT-OVERFLOW: ellipsis" runat="server" Width="496" Text='<%# "<nobr>"+DataBinder.Eval(Container, "DataItem.BookComment")+"/<nobr>"%>' Height="50px"><br> </asp:Label></TD><br> </TR><br> <TR><br> <TD>金额:<br> <asp:Label id=Label3 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Price","{0:C}") %>'><br> </asp:Label></TD><br> </TR><br> </TABLE><br> </TD><br> </TR><br> <TR><br> <TD><br> <asp:Label id="Label4" runat="server">日期:</asp:Label><br> <asp:Label id=Label5 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.PublishDate", "{0:D}") %>'><br> </asp:Label></TD><br> <TD align="right"><br> <asp:ImageButton id="Imagebutton1" runat="server" ImageUrl="a.gif" CommandName="AddCart"></asp:ImageButton></TD><br> </TR><br> </TABLE><br> </ItemTemplate><br> <AlternatingItemTemplate><br> <TABLE id="Table4" cellSpacing="1" cellPadding="1" bgColor="#eefeff" border="0"><br> <TR><br> <TD><br> <a href='<%# "BookView.aspx?BookID="+DataBinder.Eval(Container, "DataItem.BookGuid") %>'><br><!--imageview.aspx页面专用来处理书的图片--> <asp:Image id=Image2 runat="server" Width="120px" Height="144px" ImageUrl='<%# "ImageView.aspx?imgid="+DataBinder.Eval(Container, "DataItem.BookGuid") %>'><br> </asp:Image></a></TD><br> <TD vAlign="top"><br> <TABLE id="Table5" cellSpacing="1" cellPadding="1" width="300" border="1"><br> <TR><br> <TD>书名:<br> <asp:Label id=Label6 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.BookTitle") %>'><br> </asp:Label></TD><br> </TR><br> <TR><br> <TD>图书简介:<br> <asp:Label id=Label7 style="OVERFLOW: hidden; TEXT-OVERFLOW: ellipsis" runat="server" Width="496px" Text='<%# DataBinder.Eval(Container, "DataItem.BookComment") %>' Height="50px"><br> </asp:Label></TD><br> </TR><br> <TR><br> <TD>金额:<br> <asp:Label id=Label8 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Price") %>'><br> </asp:Label></TD><br> </TR><br> </TABLE><br> </TD><br> </TR><br> <TR><br> <TD><br> <asp:Label id="Label9" runat="server">日期:</asp:Label><br> <asp:Label id=Label10 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.PublishDate") %>'><br> </asp:Label></TD><br> <TD align="right"><br> <asp:ImageButton id="Imagebutton2" runat="server" ImageUrl="a.gif"></asp:ImageButton></TD><br> </TR><br> </TABLE><br> </AlternatingItemTemplate><br> </asp:datalist></form><br></body><br></HTML>

//CS CODE<br>using System;<br>using System.Collections;<br>using System.ComponentModel;<br>using System.Data;<br>using System.Drawing;<br>using System.Web;<br>using System.Web.SessionState;<br>using System.Web.UI;<br>using System.Web.UI.WebControls;<br>using System.Web.UI.HtmlControls;<br>using System.Data.SqlClient;<br>namespace CartTest<br>{<br>/// <summary><br>/// BookList 的摘要说明。<br>/// </summary><br>public class BookList : System.Web.UI.Page<br>{<br> protected System.Web.UI.WebControls.DataList DataList1;<br><br> private void Page_Load(object sender, System.EventArgs e)<br> {<br> if(!this.IsPostBack)<br> {<br> SqlConnection cn=new SqlConnection();<br> cn.ConnectionString="server=.;uid=sa;pwd=;database=p1";<br> cn.Open();<br> SqlCommand cmd=new SqlCommand();<br> cmd.Connection=cn;<br> cmd.CommandText="select * from books ";<br> SqlDataAdapter da=new SqlDataAdapter();<br> da.SelectCommand=cmd;<br> DataSet ds=new DataSet();<br> da.Fill(ds);<br> cn.Close();<br> this.DataList1.DataSource=ds.Tables[0];<br> this.DataBind();<br> }<br> }

#region Web 窗体设计器生成的代码<br> override protected void OnInit(EventArgs e)<br> {<br> //<br> // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。<br> //<br> InitializeComponent();<br> base.OnInit(e);<br> }<br><br> /// <summary><br> /// 设计器支持所需的方法 - 不要使用代码编辑器修改<br> /// 此方法的内容。<br> /// </summary><br> private void InitializeComponent()<br> { <br> this.DataList1.ItemCommand += new System.Web.UI.WebControls.DataListCommandEventHandler(this.DataList1_ItemCommand);<br> this.Load += new System.EventHandler(this.Page_Load);

}<br> #endregion

private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)<br> {<br><br> //用户选中一本书后,默认订一本书<br> string bookGuid=this.DataList1.DataKeys[e.Item.ItemIndex].ToString();<br> Book b=new Book();<br> //首先获得自己的购物车<br> Books bs=(Books)Session["MyCart"];<br> b.BookID=bookGuid;<br> b.Num=1;<br> //根据ITEM的类型取值<br> if(e.Item.ItemType==ListItemType.Item)<br> {<br> b.Price=Convert.ToDecimal(((Label)e.Item.FindControl("Label3")).Text.Substring(1));<br> b.Title=((Label)e.Item.FindControl("Label1")).Text;<br> }<br> else if(e.Item.ItemType==ListItemType.AlternatingItem)<br> {<br> b.Price=Convert.ToDecimal(((Label)e.Item.FindControl("Label8")).Text.Substring(1));<br> b.Title=((Label)e.Item.FindControl("Label6")).Text;<br> }<br> //将书加入到购物车<br> bs.Add(b);<br> Session["MyCart"]=bs;<br> //打开购物车页面。<br> Response.Write("<script>window.open('webform1.aspx')</script>");<br> }

<br>}<br>}

<br>//图片处理页<br>using System;<br>using System.Collections;<br>using System.ComponentModel;<br>using System.Data;<br>using System.Drawing;<br>using System.Web;<br>using System.Web.SessionState;<br>using System.Web.UI;<br>using System.Web.UI.WebControls;<br>using System.Web.UI.HtmlControls;<br>using System.Data.SqlClient;<br>namespace CartTest<br>{<br>/// <summary><br>/// ImageView 的摘要说明。<br>/// </summary><br>public class ImageView : System.Web.UI.Page<br>{<br><br> private void Page_Load(object sender, System.EventArgs e)<br> {<br> SqlConnection cn=new SqlConnection();<br> cn.ConnectionString="server=.;uid=sa;pwd=;database=p1";<br> cn.Open();<br> SqlCommand cmd=new SqlCommand();<br> cmd.Connection=cn;<br> cmd.CommandText="select cover from books where bookguid='"+ this.Request.QueryString["imgid"].ToString() +"'";<br> //cmd.CommandText="select cover from books where bookguid='350bc228-a12d-4c15-b8e0-1e625e40403e'";<br> SqlDataAdapter da=new SqlDataAdapter();<br> da.SelectCommand=cmd;<br> DataSet ds=new DataSet();<br> da.Fill(ds);<br> cn.Close();<br> Response.Clear();<br> Response.ClearContent();<br> Response.ContentType="Image/jpg";<br> Response.BinaryWrite((byte[])ds.Tables[0].Rows[0][0]);

}

#region Web 窗体设计器生成的代码<br> override protected void OnInit(EventArgs e)<br> {<br> //<br> // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。<br> //<br> InitializeComponent();<br> base.OnInit(e);<br> }<br><br> /// <summary><br> /// 设计器支持所需的方法 - 不要使用代码编辑器修改<br> /// 此方法的内容。<br> /// </summary><br> private void InitializeComponent()<br> { <br> this.Load += new System.EventHandler(this.Page_Load);

}<br> #endregion<br>}<br>}

//当用户选取其中一本书时,获得用户当前选中书的ID,将此ID传到具体察看页面<br><%@ Page language="c#" Codebehind="BookView.aspx.cs" AutoEventWireup="false" Inherits="CartTest.BookView" %><br><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><br><HTML><br> <HEAD><br> <title>BookView</title><br> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"><br> <meta name="CODE_LANGUAGE" Content="C#"><br> <meta name="vs_defaultClientScript" content="JavaScript"><br> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"><br> </HEAD><br><body MS_POSITIONING="GridLayout"><br> <form id="Form1" method="post" runat="server"><br> <FONT face="宋体"><br> <asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 24px" runat="server"<br> Width="302px" Height="35px"></asp:Label><br> <asp:Image id="Image1" style="Z-INDEX: 102; LEFT: 24px; POSITION: absolute; TOP: 72px" runat="server"<br> Width="120px" Height="136px"></asp:Image><br> <asp:Label id="Label2" style="Z-INDEX: 103; LEFT: 192px; POSITION: absolute; TOP: 88px" runat="server"<br> Width="280px"></asp:Label><br> <asp:Label id="Label4" style="Z-INDEX: 104; LEFT: 200px; POSITION: absolute; TOP: 128px" runat="server" Width="328px">Label</asp:Label><br><asp:Panel id=Panel2 style="Z-INDEX: 105; LEFT: 24px; POSITION: absolute; TOP: 220px" runat="server" Height="172px" Width="456px"></asp:Panel><br><asp:Label id=Label5 style="Z-INDEX: 106; LEFT: 200px; POSITION: absolute; TOP: 168px" runat="server" Width="336px">Label</asp:Label></FONT><br><br> </form><br></body><br></HTML>



using System;<br>using System.Collections;<br>using System.ComponentModel;<br>using System.Data;<br>using System.Drawing;<br>using System.Web;<br>using System.Web.SessionState;<br>using System.Web.UI;<br>using System.Web.UI.WebControls;<br>using System.Web.UI.HtmlControls;<br>using System.Data.SqlClient;

namespace CartTest<br>{<br>/// <summary><br>/// BookView 的摘要说明。<br>/// </summary><br>public class BookView : System.Web.UI.Page<br>{<br> protected System.Web.UI.WebControls.Label Label1;<br> protected System.Web.UI.WebControls.Image Image1;<br> protected System.Web.UI.WebControls.Label Label2;<br> protected System.Web.UI.WebControls.Label Label3;<br> protected System.Web.UI.WebControls.TextBox TextBox1;<br> protected System.Web.UI.WebControls.Label Label4;<br> protected System.Web.UI.WebControls.Panel Panel2;<br> protected System.Web.UI.WebControls.Label Label5;<br> protected System.Web.UI.WebControls.Panel Panel1;<br><br> private void Page_Load(object sender, System.EventArgs e)<br> {<br> if(!this.IsPostBack)<br> {<br> if(this.Request["BookID"]!=null)<br> {<br> this.Image1.ImageUrl="ImageView.aspx?imgid="+this.Request["BookID"].ToString();<br> SqlConnection cn=new SqlConnection();<br> cn.ConnectionString="server=.;uid=sa;pwd=;database=p1";<br> cn.Open();<br> SqlCommand cmd=new SqlCommand();<br> cmd.Connection=cn;<br> cmd.CommandText="select * from books where bookguid='"+ this.Request.QueryString["BookID"].ToString() +"'";<br> //cmd.CommandText="select cover from books where bookguid='350bc228-a12d-4c15-b8e0-1e625e40403e'";<br> SqlDataAdapter da=new SqlDataAdapter();<br> da.SelectCommand=cmd;<br> DataSet ds=new DataSet();<br> da.Fill(ds);<br> cn.Close();<br> this.Label1.Text=ds.Tables[0].Rows[0][1].ToString();<br> this.Label2.Text=ds.Tables[0].Rows[0][2].ToString();<br> this.Label4.Text=ds.Tables[0].Rows[0][3].ToString();<br> this.Panel2.Controls.Add(new LiteralControl(ds.Tables[0].Rows[0][4].ToString()));<br> }<br> }<br> }

#region Web 窗体设计器生成的代码<br> override protected void OnInit(EventArgs e)<br> {<br> //<br> // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。<br> //<br> InitializeComponent();<br> base.OnInit(e);<br> }<br><br> /// <summary><br> /// 设计器支持所需的方法 - 不要使用代码编辑器修改<br> /// 此方法的内容。<br> /// </summary><br> private void InitializeComponent()<br> { <br> this.Load += new System.EventHandler(this.Page_Load);

}<br> #endregion<br>}<br>}

<br>//购物车页面。实现此功能主要使用DataGrid来显示总计功能。

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="CartTest.WebForm1" %><br><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><br><HTML><br><HEAD><br> <title>WebForm1</title><br> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"><br> <meta name="CODE_LANGUAGE" Content="C#"><br> <meta name="vs_defaultClientScript" content="JavaScript"><br> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"><br> <script><br>//此JS主要是防止用户输入非数字<br> function checkNum()<br> {<br> var chr=String.fromCharCode(event.keyCode);<br><br> if(isNaN(chr))<br> {<br> event.keyCode=0;<br> }<br> }<br><br> </script><br></HEAD><br><body MS_POSITIONING="GridLayout"><br> <form id="Form1" method="post" runat="server"><br> <asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" PageSize="15" Font-Size="XX-Small"<br> CellPadding="4" DataKeyField="BookID" BorderStyle="Solid" BorderColor="SkyBlue" BorderWidth="1px"<br> ShowFooter="True" Width="680px"><br> <ItemStyle BackColor="#EEEEEE"></ItemStyle><br> <HeaderStyle Font-Size="9pt" Font-Bold="True" BackColor="SkyBlue"></HeaderStyle><br> <Columns><br> <asp:TemplateColumn HeaderText="书名"><br> <ItemTemplate><br> <asp:Label id=Label2 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Title") %>'><br> </asp:Label><br> </ItemTemplate><br> </asp:TemplateColumn><br> <asp:TemplateColumn HeaderText="单价"><br> <ItemTemplate><br> <asp:TextBox id=txtPrice runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Price") %>' ReadOnly="True"><br> </asp:TextBox><br> </ItemTemplate><br> </asp:TemplateColumn><br> <asp:TemplateColumn HeaderText="数量"><br> <ItemTemplate><br> <asp:TextBox id=txtNum onkeypress="checkNum()" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Num") %>'><br> </asp:TextBox><br> </ItemTemplate><br> </asp:TemplateColumn><br> <asp:TemplateColumn HeaderText="总金额"><br> <ItemTemplate><br> <asp:TextBox id=txtSum runat="server" ReadOnly="True" Text='<%# DataBinder.Eval(Container, "DataItem.Sum") %>'><br> </asp:TextBox><br> </ItemTemplate><br> <FooterTemplate><br> <asp:TextBox id="txtSumPrice" runat="server" ReadOnly="True"></asp:TextBox><br> </FooterTemplate><br> </asp:TemplateColumn><br> <asp:TemplateColumn HeaderText="操作"><br> <ItemTemplate><br> <asp:LinkButton id="LinkButton1" runat="server" CommandName="editBook">修改</asp:LinkButton><FONT face="宋体">&amp;nbsp;</FONT><br> <asp:LinkButton id="LinkButton2" runat="server" CommandName="delBook">删除</asp:LinkButton><br> </ItemTemplate><br> </asp:TemplateColumn><br> </Columns><br> <PagerStyle NextPageText="4" Font-Size="10pt" Font-Names="webdings" PrevPageText="3" BackColor="SkyBlue"></PagerStyle><br> </asp:DataGrid><br> </form><br></body><br></HTML>

//购物车察看页里的数据是Session里所存放的Books集合对象。可以将其绑定到网格控件

using System;<br>using System.Collections;<br>using System.ComponentModel;<br>using System.Data;<br>using System.Drawing;<br>using System.Web;<br>using System.Web.SessionState;<br>using System.Web.UI;<br>using System.Web.UI.WebControls;<br>using System.Web.UI.HtmlControls;<br>using System.Data.SqlClient;<br>namespace CartTest<br>{<br>/// <summary><br>/// WebForm1 的摘要说明。<br>/// </summary><br>public class WebForm1 : System.Web.UI.Page<br>{<br> protected System.Web.UI.WebControls.DataGrid DataGrid1;<br><br> private void Page_Load(object sender, System.EventArgs e)<br> {<br> if(!this.IsPostBack)<br> {<br> Books bs=(Books)Session["MyCart"];<br> this.DataGrid1.DataSource=bs;<br> this.DataBind();<br> }<br> }

#region Web 窗体设计器生成的代码<br> override protected void OnInit(EventArgs e)<br> {<br> //<br> // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。<br> //<br> InitializeComponent();<br> base.OnInit(e);<br> }<br><br> /// <summary><br> /// 设计器支持所需的方法 - 不要使用代码编辑器修改<br> /// 此方法的内容。<br> /// </summary><br> private void InitializeComponent()<br> { <br> this.DataGrid1.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemCreated);<br> this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);<br> this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);<br> this.Load += new System.EventHandler(this.Page_Load);

}<br> #endregion



//利用此事件对网格控件的外观进行控件(合并列)<br> private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)<br> {<br> ListItemType itemType = e.Item.ItemType;<br> if (itemType == ListItemType.Footer) <br> {<br>// e.Item.BackColor = Color.SeaGreen; <br>// e.Item.Font.Bold = true;<br> e.Item.Cells.RemoveAt(0); <br> e.Item.Cells.RemoveAt(0);<br> e.Item.Cells[0].ColumnSpan = 3; <br> e.Item.Cells[0].HorizontalAlign = HorizontalAlign.Right;<br><br> } <br> }

<br> private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)<br> {<br> Books bs=(Books)Session["MyCart"];<br> if(e.CommandName=="editBook")<br> {<br> int num=Convert.ToInt16(((TextBox)e.Item.FindControl("txtNum")).Text);<br> decimal p=Convert.ToDecimal(((TextBox)e.Item.FindControl("txtPrice")).Text);<br> bs[this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString()].Sum=p*num;<br> bs[this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString()].Num=num;<br> }<br> else if(e.CommandName=="delBook")<br> {<br> bs.Remove(this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString());<br> }<br> this.DataGrid1.DataSource=bs;<br> this.DataBind();<br> Session["MyCart"]=bs;<br> }

private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)<br> {<br> ListItemType itemType = e.Item.ItemType;<br> if (itemType == ListItemType.Footer) <br> {<br> decimal sum=0;<br> foreach(DataGridItem item in this.DataGrid1.Items)<br> {<br> decimal p=Convert.ToDecimal(((TextBox) item.FindControl("txtPrice")).Text);<br> int n=Convert.ToInt16(((TextBox) item.FindControl("txtNum")).Text);<br> sum+=p*n;<br> }<br> ((TextBox)e.Item.FindControl("txtSumPrice")).Text=sum.ToString();<br><br><br><br> } <br> }<br>}<br>}

<br>此外我们还要在Global.asax.CS文件中将变量进行初始化,确保每个客户端访问网站时都有一个购物车,当然里面是没有书的。

此购物车实现的原理很简单.首先自己定义一个货物类,及货物集合类(实现IEnumerable集合).当每个用户进入到网站时,首先给其分配一个空的购物车。当用户在购物页面选取一个货物时,取得该货物,同时获得自己的购物车,将货物保存到购物车中,最后再保存购物车。如果用户要对购物车中的内容进行修改也是一样的原理。而且在购物车察看页。我们则将自己生成的集合类对象绑定到我们的页面中。利用网格窗控年的一此事件来处理货物统计的问题。

希望这样一个思路能对您有所帮助。



作者Blog:http://blog.csdn.net/greystar/<br>

 
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics