zoukankan      html  css  js  c++  java
  • asp.net 实现购物车详细代码

    <%@ Page language="c#" Codebehind="shoppingcart.aspx.cs" AutoEventWireup="false" Inherits="myshop.shoppingcart" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML>  <HEAD> 
    <title>shoppingcart
    </title> 
    <meta http-equiv="Content-Type" content="text/html;
    charset=gb2312">  <LINK href="mycss.css" type="text/css" rel="stylesheet"> 
    <meta name="vs_defaultClientScript" content="JavaScript"> 
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">  </HEAD>
    <body>  <center>  
    <form id="Form1" runat="server">    <table width="500" border="0" cellspacing="0" cellpadding="0">     <tr>      <td>      
    <asp:DataGrid id="ShoppingCartDlt" runat="server" Width="500" BackColor="white" BorderColor="black"        ShowFooter="false" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#cecfd6"        AutoGenerateColumns="false" MaintainState="true">        <Columns>        
    <asp:TemplateColumn HeaderText="删除">         
    <ItemTemplate>           <center>           
    <asp:CheckBox id="chkProductID" runat="server" />           </center>         
    </ItemTemplate>         </asp:TemplateColumn>        
    <asp:BoundColumn DataField="ProdID" HeaderText="ID" />        
    <asp:BoundColumn DataField="ProName" HeaderText="商品名称" />        
    <asp:BoundColumn DataField="UnitPrice" HeaderText="单价" />        
    <asp:TemplateColumn HeaderText="数量">         
    <ItemTemplate>          
    <asp:TextBox id="CountTb" runat="server" Text='<%#DataBinder.Eval( Container.DataItem,"ProdCount" )%>'>           </asp:TextBox>         
    </ItemTemplate>         </asp:TemplateColumn>        
    <asp:BoundColumn DataField="TotalPrice" HeaderText="小计( 元 )" />        </Columns>       </asp:DataGrid></td>     </tr>    </table>    <br>    <table width="500" border="0" cellspacing="0" cellpadding="0">     <tr>      <td>
    <asp:Button id="update" runat="server" Text="更新我的购物车"  CssClass="button2" /></td>      <td>
    <asp:Button id="CheckOut" runat="server" Text="结算"  CssClass="button5" />

    <input type="button" name="close2" value="继续购物" onClick="window.close( );
    return false;
    "        class="button2"></td>      <td align="right"><br>      
    <asp:Label id="label" runat="server" Width="100px" Visible="True" ForeColor="#FF8080" Height="18px"></asp:Label></td>     </tr>    </table>  
    </form>  </center>
    </body></HTML>=======================================================================================以上为HTML页面部分==========================================================================================
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Web.SessionState;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.OleDb;
    using System.Configuration;
    namespace myshop
    {
        /// <summary> /// shoppingcart 的摘要说明. /// </summary> public class shoppingcart : System.Web.UI.Page
        {
            protected System.Web.UI.WebControls.DataGrid ShoppingCartDlt;
            protected System.Web.UI.WebControls.Button update;
            protected System.Web.UI.WebControls.Button CheckOut;
            protected System.Web.UI.HtmlControls.HtmlForm Form1;
            protected System.Web.UI.WebControls.Label label;
            protected System.Web.UI.WebControls.CheckBox     chkProductID;
            protected System.Web.UI.WebControls.TextBox      txtCount;
            protected System.Web.UI.WebControls.TextBox      CountTb;
            string AddProID;
            private void Page_Load( object sender, System.EventArgs e ) 
            {
                try  
                {
                    if ( Session["logon"]!="yes"||Session["username"]==null )   
                    {
                        Response.Redirect( "error.htm" ) ;
                    }
                }
                catch  
                {
                    Response.Redirect( "error.htm" ) ;
                }
                /////////////查看用户是否已经登陆.
                if( !IsPostBack )  
                {
                    if( Request.Params["mode"]=="view" )         //检测是否为直接查看购物车.   
                    {
                        ViewShoppingCart( );
                        Caculator( );
                    }
                    if( Request.Params["productID"]!=null||Request.Params["productID"]!="" )   
                    {
                        AddProID=Request["productID"];
                        UpdateShoppingCart( );
                        Caculator( );
                    }
                }
                // 在此处放置用户代码以初始化页面 
            }
            public void CreateCartTable( )   //创建购物车 
            {
                DataSet ds = new DataSet( );
                DataTable newDT=new DataTable( "CartTable" );
                ds.Tables.Add( newDT );
                DataColumn newDC;
                newDC=new DataColumn( "ProdID",System.Type.GetType( "System.Int32" ) );
                ds.Tables["CartTable"].Columns.Add( newDC );
                newDC=new DataColumn( "ProdCount",System.Type.GetType( "System.Int32" ) );
                newDC.DefaultValue=1;
                ds.Tables["CartTable"].Columns.Add( newDC );
                newDC=new DataColumn( "ProName",System.Type.GetType( "System.String" ) );
                ds.Tables["CartTable"].Columns.Add( newDC );
                newDC=new DataColumn( "UnitPrice",System.Type.GetType( "System.Double" ) );
                ds.Tables["CartTable"].Columns.Add( newDC );
                newDC=new DataColumn( "TotalPrice",System.Type.GetType( "System.Double" ) );
                ds.Tables["CartTable"].Columns.Add( newDC );
                newDC=new DataColumn( "IsDeleted",System.Type.GetType( "System.Int32" ) );
                newDC.DefaultValue=0;
                //  public void WriteShoppingCart( ) 中 newDR[5]="0";
                行,已被注销,   ds.Tables["CartTable"].Columns.Add( newDC );
                Session["myCartTable"]=newDT;
                ShoppingCartDlt.DataSource=ds.Tables["CartTable"].DefaultView;
                ShoppingCartDlt.DataBind( );
            }
            public void UpdateShoppingCart( ) 
            {
                if( Session["myCartTable"]==null )//Session["myCartTable"]==null  
                {
                    CreateCartTable( );
                    //调用函数CreateCartTable( )新建一个DataTable    WriteShoppingCart( );
                }
                else  
                {
                    //如果购物蓝中已有商品,则需要对购物信息表DataTable进行更新,并将其棒定到ShoppingCartDlt                      WriteShoppingCart( );
                }
            }
            public void ViewShoppingCart( )                               //查看购物车 
            {
                if( Session["myCartTable"]!=null )  
                {
                    DataTable viewTable=new DataTable( "nowCartTable" );
                    viewTable=( DataTable )Session["myCartTable"];
                    ShoppingCartDlt.DataSource = viewTable.DefaultView;
                    //购物车棒定到ShoppingCartDlt    ShoppingCartDlt.DataBind( );
                }
            }
            public void WriteShoppingCart( ) 
            {
                if( Request.Params["mode"]!="view" )                             //检查是否是直接查看购物车,如果直接查看,就不再写MYCARTTABLE  
                {
                    DataTable nowTable=new DataTable( "nowCartTable" );
                    nowTable=( DataTable )Session["myCartTable"];
                    int pn=nowTable.Rows.Count;
                    int i=0;
                    bool hasone=false;
                    int nowProdID;
                    while( i<pn && !hasone )   
                    {
                        nowProdID=Int32.Parse( nowTable.Rows[i][0].ToString( ) );
                        if( nowProdID==Int32.Parse( AddProID ) )                                   //判断购物信息表中,是否存有当前放入商品. if( nowProdID==Int32.Parse( AddProID ) )    
                        {
                            hasone=true;
                        }
                        else    
                        {
                            i++;
                        }
                    }
                    if( hasone )                              
                    {
                        //如果已有该商品,则 hasone=true,更改该数据行     DataRow oldDR;
                        oldDR=nowTable.Rows[i];
                        oldDR["ProdCount"]=Int32.Parse( oldDR["ProdCount"].ToString( ) )+1;
                        oldDR["TotalPrice"]=Int32.Parse( oldDR["ProdCount"].ToString( ) )*Double.Parse( oldDR["UnitPrice"].ToString( ) );
                    }
                    else   
                    {
                        //如果没有该商品,在表中新加如一行.     DataRow newDR;
                        double unitp;
                        String strcon="provider=Microsoft.jet.OLEDB.4.0;
                        data Source="+Server.MapPath( ConfigurationSettings.AppSettings["MDBpath2"] )+";
                        ";
                        OleDbConnection myConnection = new OleDbConnection( strcon );
                        string strSQL= "select *  from pro where product_id="+AddProID+"";
                        OleDbDataAdapter myCommand = new  OleDbDataAdapter( strSQL, myConnection );
                        DataSet ds = new DataSet( );
                        myCommand.Fill( ds, "AddP" );
                        newDR=nowTable.NewRow( );
                        newDR[0]=AddProID;
                        newDR[2]=ds.Tables["Addp"].Rows[0]["product_name"].ToString( );
                        unitp=Double.Parse( ds.Tables["AddP"].Rows[0]["product_memprice"].ToString( ) );
                        //会员价                            newDR[3]=unitp;
                        newDR[4]=unitp;
                        //第一次读库,所以总价格和单价是一样的.     //newDR[5]="0";
                        nowTable.Rows.Add( newDR );
                        myConnection.Close( );
                    }
                    ShoppingCartDlt.DataSource = nowTable.DefaultView;
                    //将更新后的 DataTable棒定到ShoppingCartDlt    ShoppingCartDlt.DataBind( );
                    Session["myCartTable"] = nowTable;
                    //重新保存更新过的DataTable  
                }
            }
            public void Caculator( ) 
            {
                if( Session["myCartTable"]!=null )                         //购物车是否为空  
                {
                    int h;
                    Double TotalPri;
                    TotalPri=0;
                    DataTable nowTable3=new DataTable( "nowCartTable3" );
                    nowTable3=( DataTable )Session["myCartTable"];
                    if( nowTable3.Rows.Count>0 )                               //返回购物车中是否有货物   
                    {
                        for( h=0;
                        h<=nowTable3.Rows.Count-1;
                        h++ )    
                        {
                            TotalPri=TotalPri+Int32.Parse( nowTable3.Rows[h][4].ToString( ) );
                            //Double.Parse( ( string )TotalText.Text );
                        }
                        label.Text="总计: "+TotalPri.ToString( )+" 元" ;
                    }
                }
            }
            public void Update( ) 
            {
                int i;
                int j;
                int k;
                ArrayList deleteItem = new ArrayList( 10 );
                DataGridItem _item ;
                j=0;
                int deleteid;
                k=0;
                DataTable nowTable2=new DataTable( "nowCartTable2" );
                nowTable2=( DataTable )Session["myCartTable"];
                for( i=0;
                i<=this.ShoppingCartDlt.Items.Count-1;
                i++ )  
                {
                    _item = this.ShoppingCartDlt.Items[i];
                    TextBox CountText=( TextBox )this.ShoppingCartDlt.Items[i].Cells[4].FindControl( "CountTb" );
                    //Controls[1];
                    //_item.FindControl( "CountTb" );
                    CheckBox ProductIDCheck =( CheckBox ) _item.FindControl( "chkProductID" );
                    nowTable2.Rows[i][1] = Int32.Parse( CountText.Text.ToString( ) );
                    nowTable2.Rows[i][4] = Int32.Parse( nowTable2.Rows[i][1].ToString( ) ) * Double.Parse( nowTable2.Rows[i][3].ToString( ) );
                    if( ProductIDCheck.Checked )   
                    {
                        nowTable2.Rows[i][5] = 1;
                        //添加删除标记1     j=j+1;
                    }
                }
                string strExpr="IsDeleted>0";
                //http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemDataDataTableClassSelectTopic.asp   DataRow[] foundRows = nowTable2.Select( strExpr );
                for( int m = 0;
                m < foundRows.Length;
                m ++ )  
                {
                    //Console.WriteLine( foundRows[i][0] );
                    foundRows[m].Delete( );
                }
                ShoppingCartDlt.DataSource = nowTable2.DefaultView;
                ShoppingCartDlt.DataBind( );
                Session["myCartTable"] = nowTable2;
                Caculator( );
            }
            #region Web 窗体设计器生成的代码  override protected void OnInit( EventArgs e ) 
            {
                //   // CODEGEN: 该调用是 asp.NET Web 窗体设计器所必需的.   //   InitializeComponent( );
                base.OnInit( e );
            }
            /// <summary>  /// 设计器支持所需的方法 - 不要使用代码编辑器修改  /// 此方法的内容.  /// </summary>  private void InitializeComponent( ) 
            {
                this.update.Click += new System.EventHandler( this.update_Click );
                this.CheckOut.Click += new System.EventHandler( this.CheckOut_Click );
                this.Load += new System.EventHandler( this.Page_Load );
            }
            #endregion
            private void update_Click( object sender, System.EventArgs e ) 
            {
                Update( );
            }
            private void CheckOut_Click( object sender, System.EventArgs e ) 
            {
                Update( );
                Response.Redirect( "checkout.aspx" );
            }
        }

  • 相关阅读:
    echarts-五分钟的教程
    vue中的路由
    2x or 3X的图
    background-size cover和contain的用法详解
    吃转基因有害?科普这么多年咋还有人信!
    基于UDP协议的Socket通信
    基于TCP协议Socket通信
    echarts地图
    Ehcache缓存实例
    Tomcat配置绝对路径
  • 原文地址:https://www.cnblogs.com/cxy521/p/1258491.html
Copyright © 2011-2022 走看看