程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> asp.net 實現購物車

asp.net 實現購物車

編輯:.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>    &nbs

$False$

p;    
</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&gt;      <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( "nowCartTa
                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   
                {
  &nbsp;                 //如果沒有該商品,在表中新加如一行.     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 );
                &nDataSet ds = new DataSet( );
                    myCommand.Fill( ds, "AddP" );
                    newDR=nowTable.NewRow( );
                    newDR[0]=AddProID;
                    newDR[2]=ds.Tables["Addp"].Rows[0]["product_name"].ToString( );
              &nbsp;     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 )                         //購物車是否為空  
 &nbsp;          {
                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 );
                    }
              &nbsp;&n  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( 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" );
        }
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved