zoukankan      html  css  js  c++  java
  • 商城中,购物车的实现(DataTable和Session)

         最近在做一个商城购物的一部分,用到了购物车,因为是刚参加工作,对购物这方面,不太了解,所以用自己的方法作了一个购物车,在网上查了查资料,有的用数据库纪录购物车信息的,有的用Session纪录的,由于时间的原因,我用的是Session,如果各位有更好的建议或意见,不妨在此讨论一下,共同进步,共同学习!
        一下是源代码,我在里面用的都是图片,可能用的时候图片显示不出来,在一个我用的是三层架构的,所以在用的时候把它改成您们所用的就行了
    //------------------------------------------------------------------------------------------Html------------------------------------------------------------------------

    <!--/**************************************************************
     * 
     * Copyright (C)1995-2006 .
     * 
     * Author      : 兴百放
     * Create Date : 2007-3-28
     * Summary     : 购物车管理
     * 
     * 
     * Modified By : 
     * Date        : 
     * Mail        : xbf321@163.com Or xbf321@tom.com
     * Blog        : blog.csdn.net/xbf321
     *************************************************************
    */-->
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Cart.aspx.cs" Inherits="Cart" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        
    <title>无标题页</title>
    </head>
    <body>
        
    <form id="form1" runat="server">
        
    <div>
            
    <table>
                
    <tr>
                    
    <td colspan="4">
                        
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowFooter="True" OnRowDataBound="GridView1_RowDataBound">
                            
    <Columns>
                                
    <asp:BoundField DataField="Pro_Id" Visible="False" />
                                
    <asp:TemplateField HeaderText="产品名称">
                                
    <ItemTemplate>
                                
    <%#Eval("Pro_Name"%>
                                
    </ItemTemplate>
                                
    </asp:TemplateField>
                                
    <asp:TemplateField HeaderText="数量">
                                
    <ItemTemplate>               
                                    
    <asp:TextBox ID="txtproquantity" runat="server" Width="51px" Text='<%#Eval("Pro_Quantity") %>'></asp:TextBox>
                                
    </ItemTemplate>
                                    
    <ItemStyle HorizontalAlign="Center" />
                                
    </asp:TemplateField>
                                
    <asp:TemplateField HeaderText="单价">
                                
    <ItemTemplate>
                                
    <%#Eval("Pro_Price"%>
                                
    </ItemTemplate>
                                    
                                    
    <ItemStyle HorizontalAlign="Center" />
                                
    </asp:TemplateField>
                                
    <asp:TemplateField HeaderText="价格">
                                
    <ItemTemplate>
                                
    <%#Eval("Pro_SubTotal"%>
                                
    </ItemTemplate>
                                
    <FooterTemplate>
                                        总共:
    <%=dTotal %>
                                    
    </FooterTemplate>
                                
    </asp:TemplateField>
                            
    </Columns>
                        
    </asp:GridView>
                    
    </td>
                
    </tr>
                
    <tr>
                    
    <td style=" 100px">
                        
    <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Images/cart_clear_zh.gif"
                            OnClick
    ="ImageButton1_Click" /></td>
                    
    <td style=" 100px">
                        
    <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/Images/cart_change_zh.gif" OnClick="ImageButton2_Click" /></td>
                    
    <td style=" 100px">
                        
    <asp:ImageButton ID="ImageButton3" runat="server" ImageUrl="~/Images/cart_continue_zh.gif"
                            OnClick
    ="ImageButton3_Click" /></td>
                    
    <td style=" 100px">
                        
    <asp:ImageButton ID="ImageButton4" runat="server" ImageUrl="~/Images/cart_next_zh.gif" OnClick="ImageButton4_Click" /></td>
                
    </tr>
            
    </table>
        
        
    </div>
        
    </form>
    </body>
    </html>
    //-----------------------------------------------------------------------------------------。Cs------------------------------------------------------------------------
    /*
    *************************************************************
     * 
     * Copyright (C)1995-2006 .
     * 
     * Author      : 兴百放
     * Create Date : 2007-3-28
     * Summary     : 购物车管理
     * 
     * 
     * Modified By : 
     * Date        : 
     * Mail        : xbf321@163.com Or xbf321@tom.com
     * Blog        : blog.csdn.net/xbf321
     *************************************************************
    */
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections.Generic;

    public partial class Cart : System.Web.UI.Page
    {
        
    private string _Pro_Id;
        DataTable CartTable 
    = new DataTable();  //声明一个DataTable对象
        DataRow dr;
        
    public Double dTotal = 0.00;            //总计款额
        protected void Page_Load(object sender, EventArgs e)
        {        

            
    if(!Page.IsPostBack)
            {
                
    if (Session["CartShop"== null)                                       //判断是否为第一次添加购物车否则创建DataTable
                {
                    CartTable.Columns.Add(
    new DataColumn("Pro_Id"typeof(string)));
                    CartTable.Columns.Add(
    new DataColumn("Pro_Name"typeof(string)));
                    CartTable.Columns.Add(
    new DataColumn("Pro_Quantity",typeof(int)));
                    CartTable.Columns.Add(
    new DataColumn("Pro_Price"typeof(decimal)));
                    CartTable.Columns.Add(
    new DataColumn("Pro_SubTotal",typeof(decimal)));
                    Session[
    "CartShop"= CartTable;
                }
                
    else
                {
                    CartTable 
    = (DataTable)Session["CartShop"];
                }
                
    if (Request.QueryString["proid"].ToString() != null)
                {
                    _Pro_Id 
    = Request.QueryString["proid"].ToString();
                    InsertList(_Pro_Id);
                }
                gvCartBind();
            }
            
            
        }
        
    /// <summary>
        
    /// 向DataTable插入数据,并判断是否为同一种商品,如果是则让数量增一,否则创建一行
        
    /// </summary>
        
    /// <param name="sPro_Id"></param>
        public void InsertList(string sPro_Id)
        {
            
    int iPro_Quantity = 1;
            
    bool IsSame = false;                                      //表示是否为同一种商品
            eWebShop.BLL.Product bPro = new eWebShop.BLL.Product();   //这是购物车的逻辑层

            
    foreach (DataRow dr in CartTable.Rows)                   //遍历DataTable
            {
                
    if (dr[0].ToString() == sPro_Id)
                {
                    iPro_Quantity 
    = Convert.ToInt32(dr[2].ToString());
                    iPro_Quantity
    ++;
                    dr[
    2= iPro_Quantity;
                    dr[
    4= iPro_Quantity * Convert.ToDecimal(dr[3].ToString());
                    IsSame 
    = true;
                }
            }
            
    if (!IsSame)                                              //DataTable里没有,则创建一行该商品
            {
                dr 
    = CartTable.NewRow();
                dr[
    0= sPro_Id;
                dr[
    1= bPro.GetOnlyProductById(sPro_Id).PName;
                dr[
    2= iPro_Quantity;
                dr[
    3= bPro.GetOnlyProductById(sPro_Id).PMoney;
                dr[
    4= iPro_Quantity * Convert.ToDecimal(dr[3].ToString());
                CartTable.Rows.Add(dr);
            }
            Session[
    "CartShop"= CartTable;                          //添加到Session中

        }
        
    public void gvCartBind()
        {
            GridView1.DataSource 
    = CartTable;                           //GridView绑定
            GridView1.DataBind();
        }
        
    /// <summary>
        
    /// 清空购物车
        
    /// </summary>
        
    /// <param name="sender"></param>
        
    /// <param name="e"></param>
        protected void ImageButton1_Click(object sender, ImageClickEventArgs e)   
        {
            Session[
    "CartShop"= null;
            Response.Write(
    "<script>window.close();</script>");
        }
        
    /// <summary>
        
    /// 继续购买商品
        
    /// </summary>
        
    /// <param name="sender"></param>
        
    /// <param name="e"></param>
        protected void ImageButton3_Click(object sender, ImageClickEventArgs e)
        {
            Response.Write(
    "<script>window.close();</script>");
        }
        
    /// <summary>
        
    /// 得出商品总的价格
        
    /// </summary>
        
    /// <param name="sender"></param>
        
    /// <param name="e"></param>
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            
    if(e.Row.RowType == DataControlRowType.Footer)
            {            
                
    for (int i = 0; i < CartTable.Rows.Count; i++ )
                {
                    dTotal 
    += Convert.ToDouble(CartTable.Rows[i][4]);
                }
            }
        }
        
    /// <summary>
        
    /// 调整商品数量并更新DataTable
        
    /// </summary>
        
    /// <param name="sender"></param>
        
    /// <param name="e"></param>
        protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
        {
            CartTable 
    = (DataTable)Session["CartShop"];
            
    //把GirdView中的数量付给DataTable
            for (int i = 0; i < GridView1.Rows.Count; i++ )
            {
                CartTable.Rows[i][
    2= Convert.ToInt32(((TextBox)GridView1.Rows[i].FindControl("txtproquantity")).Text);
            }
            
    //然后重新遍历DataTable的总的价格
            for (int i = 0; i < CartTable.Rows.Count; i++)
            {
                CartTable.Rows[i][
    4= Convert.ToInt32(CartTable.Rows[i][2]) * Convert.ToDecimal(CartTable.Rows[i][3]);
            }
            
    //GridView重新绑定
            gvCartBind();

        }
        
    /// <summary>
        
    /// 下一步,提交
        
    /// </summary>
        
    /// <param name="sender"></param>
        
    /// <param name="e"></param>
        protected void ImageButton4_Click(object sender, ImageClickEventArgs e)
        {
        }
    }
     
  • 相关阅读:
    Power BI 根据用户权限动态生成导航跳转目标
    Power BI Tooltips 增强功能
    Power BI refresh error “could not load file or assembly…provided impersonation level is invalid”
    SQL 错误代码 18456
    如何使用SQL Server Integration Services从多个Excel文件读取数据
    通过表格编辑器将现有表引入Power BI数据流
    Power BI 中动态增长的柱状图
    ambari2.7.3离线安装hdp3.1.0时,ambari-hdp-1.repo中baseurl无值
    ambari 安装 cannot download file mysql-connector-java from http://8080/resource/mysql-connector-java.jar
    洛谷P4180 [BJWC2010]严格次小生成树
  • 原文地址:https://www.cnblogs.com/xbf321/p/896071.html
Copyright © 2011-2022 走看看