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" />&nbsp;&nbsp;<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");
      }
     }
    }

  • 相关阅读:
    python 创建文件夹
    Python利用pandas处理Excel数据的应用
    解决git rebase操作后推送远端分支不成功的问题
    LeetCode 1 两数之和
    LeetCode 70 爬楼梯
    LeetCode 11 盛水最多的容器
    LeetCode 283 移动零
    数据结构与算法 ---- 数组 -- Array
    跳表???
    自顶向下编程
  • 原文地址:https://www.cnblogs.com/ly5201314/p/1307736.html
Copyright © 2011-2022 走看看