`
yfdong21
  • 浏览: 60319 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Profile实现购物车(应用Profile)(转)

阅读更多

上面我已经介绍过了 Profile的配置和简单应用了,如果大家上面没有学会的话下面我在来做一下高级一点的应用,我会从一开始创建数据库与配置一步一步地在说一遍:

 

这们要完成一个这样的功能:一个购物车,能添加商品和删除商品的操作

 要一个描述商品的类 (ShopInfo.cs),一个购物车类 (ShopCart.cs),和一个页面显示商品信息 (default.aspx)

 

 

1.       这次我们先来创建数据库

在这个路径下: C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727

v2.0.50727是跟据你的版本号解定的文件夹

这个下面有一个 aspnet_regsql.exe进行运行 -à 配置指定的数据库

Aspnet_regsql.exe- à 下一步 - à 下一步 ------ à 你的服务器的名字,用什么身份进行登录,可以在这里选择指定的数据库

这样就可以在指定的数据库中自动生成 profile与登录控件要用的表了

 

2.       项目中在 web.config中配置文件中配置 配置节

 2.1 数据连接字符串

< connectionStrings >

     < add name = "KuConnectionString " connectionString = "Data Source=localhost;Initial Catalog=ku;Integrated Security=True " providerName = "System.Data.SqlClient "/>

</ connectionStrings >

2.2 配置 profile 配置节

         < profile defaultProvider = "MySqlProfileProvider ">

              < providers >

                   < add name = "MySqlProfileProvider " connectionStringName = "KuConnectionString " applicationName = "/ " type = "System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a "/>

      </ providers >

      < properties >

        < add name = "userName " type = "system.string " serializeAs = "Binary "/>

        < add name = "cartShop " type = "ShopInfo " serializeAs = "Binary "/>

      </ properties >

         </ profile >

   </ system.web >

解释:

第一个 <properties> 配置节

defaultProvider = "MySqlProfileProvider 为当前默认的<Profile>中的配置这里用的

是我们自己配置的MySqlProfileProvider

connectionStringName = "KuConnectionString " 为2.1中的name(是数据库连接字符串的name)

下一个< properties >

< add name = "userName " type = "system.string " serializeAs = "Binary "/>//type 为指定的类型 serializeAs="Binary" 以什么类型存储(这里用的是以二进制存储)

< add name = "cartShop " type = "ShopCart " serializeAs = "Binary "/>

这个type是我们要用到的购物车类名为这个类的类型,以二进制进行存储

 

3.       上面的是准备工作已经做好了那就开始做我们要实现的功能吧

3.1一个描述商品的一个类: ShopInfo.cs 这个类中只有一些商品的属性与它的 get,set方法

代码:

using System;

using System.Data;

using System.Configuration;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

[Serializable ]

/// <summary>

/// ShopInfo 的摘要说明

/// </summary>

public class ShopInfo

{

    private int _ID;//ID 商品的

    public int ID

    {

        get { return _ID; }

        set { _ID = value ; }

    }

    private string _Name;//Name 商品的名字

    public string Name

    {

        get { return _Name; }

        set { _Name = value ; }

    }

    private decimal _Price;//Price 商品的价格

    public decimal Price

    {

        get { return _Price; }

        set { _Price = value ; }

    }

    private int _Count = 1;//Count 商品的数量

 

    public int Count

    {

        get { return _Count; }

        set { _Count = value ; }

    }

// 构造方法

    public ShopInfo(int id,string name,decimal price) {

        _ID = id;

        _Name = name;

        _Price = price;

    }

}

3.2一个描述购物车类: ShopCart.cs 这个类中是用来操作买商品与删除商品一系列的操作,这里我们用的是 hashTable进行存储商品数据的

代码:

using System;

using System.Data;

using System.Configuration;

using System.Web.Security;

using System.Collections;

[Serializable ]

/// <summary>

/// ShopCart 的摘要说明

/// </summary>

public class ShopCart

{

     private Hashtable _HashShopCart = new Hashtable ();

     public ICollection HashShopCart

     {

        get

        {

            return _HashShopCart.Values;

        }

     }

     // 获取总价钱的属性

     public decimal Total

     {

         get

         {

             decimal sum = 0;

             foreach (ShopInfo shop in this .HashShopCart){

                 sum += shop.Count * shop.Price;

             }

             return sum;  

         }

     }

     // 添加方法

     public void ADDShop(int id,string name,decimal price)

     {  

        ShopInfo shopItem = (ShopInfo )_HashShopCart[id];//_HashShopCart[id];

        //1. 购物车中是否有这个数据有就Count++

        if (shopItem != null ){

           shopItem.Count++;

           _HashShopCart[id] = shopItem;

        }

        else //2. 没有就添加

        {

           _HashShopCart.Add(id,new ShopInfo (id,name,price));

        }

    }

 

    // 删除一个商品的方法

    public void Remove(int id)

    {

         ShopInfo shopItem =(ShopInfo ) _HashShopCart[id];

         //1. 判断有这件商品

         if (shopItem == null )

         {

            return ;

         }

         shopItem.Count--;

         //2. 减完看看数量是否为0 如果为0就删除这个

         if (shopItem.Count <= 0)

         {

              _HashShopCart.Remove(id);

         }

    }  

}   

4.       所有的都写好了现在就差显示页面了

一个显示商品的页面 default.aspx

   这里的数据我就不写了大致是:商品 id,商品名,商品价格

   之后呢,我用的是 GridView控件显示的 ,要在显示控件上加一个选择按钮,把这个文本改成‘购买‘ 要用这个选择按钮的选择事件: SelectedIndexChanged 在这个事件中写上:

获取选中行的数据;

int id = int .Parse(gvGoodsInfo.SelectedDataKey.Value.ToString());

        string name = gvGoodsInfo.SelectedRow.Cells[1].Text;

        string prices = gvGoodsInfo.SelectedRow.Cells[2].Text;

        decimal price = decimal .Parse(prices);

        // 开始放到Profile中(如果上面没有问题的话那你的数据库中就有选择的这些数据了)

        Profile.shopCart.ADDShop(id, name, price);

        BindShopCart();

非常简单吧:

还可以取出邦定到其它的控件就行显示如:

    private void BindShopCart()

    {

        if (Profile.shopCart == null )

        {

            Profile.shopCart = new ShopCart ();

        }

        gvShopCart.DataSource = Profile.shopCart.HashShopCart;

        gvShopCart.DataBind();       

}

在这个GridView控件上也加一个选择按钮进行删除商品的操作:

 protected void gvShopCart_SelectedIndexChanged(object sender, EventArgs e)

    {

        //gvShopCart 的选择事件(删除商品)

        string id = this .gvShopCart.SelectedDataKey.Value.ToString();

        Profile.shopCart.Remove(int .Parse(id));

        this .BindShopCart();

}

 

这样一个简单的购物车就完成了,上面的还有很多功能不完善,希望你们自己去完善一下。

虽然购物车已经实现了,但只能是一个匿名用户的购物车,如果是一个登录用户那用的时候只能是购买一件商品了,这样肯定是不行的,那要怎样解决它呢,下次介绍一下 < membership> 的配置与登录控件的一些操作。使用登录控件就可以轻松的解决了上诉的问题了

分享到:
评论

相关推荐

    哈希表+Profile实现购物车全流程源代码

    初学者必看! 本教程使用的哈希表结合Profile实现的AdventureWorks购物车!

    asp.net profile实现的购物车

    asp.net profile实现的购物车,支持匿名购物,用户登录后可把匿名用户的购物迁移到实名用户的购物车中。并实现购物车持久化。

    购物车Profile的介绍

    看过petshop的人肯定知道profile。这里是个简单的例子。用profile实现购买,删除,结账。

    Asp.Net Ajax 购物车

    Asp.Net Ajax 购物车 利用Asp.Net的Profile属性,实现购物车

    用ProFile做的购物车

    用asp.net技术做的购物车

    使用ASP.NET 2.0 Profile存储用户信息

    许多ASP.NET应用程序需要跨访问的用户属性跟踪功能,在ASP.NET1.1中,我们只能人工实现这一功能。但如今,使用 ASP.NET 2.0的Profile对象,这个过程变得异常简单。Stephen Walther将验证该对象,并向你展示如何使用...

    基于asp.net的购物车系统

    经典的购物车系统: 关键词: Internet 网上书店开发 购书系统 开发一套网上购书系统,可以让顾客通过浏览器浏览网站售书目录,从而挑选自己满意的图书,并下订单购买。而网站后台人员需要维护网站会员信息、书籍...

    宠物商店V4.0版源码

    本节将引领读者逐步了解PetShop 4.0的方方面面,包括应用程序安装、功能和用户界面简介、解决方案和体系架构概述等。 由于采用了Master Pages,Membership,以及Profile,表现层的编码量减少了25%,数据层 的编码 量...

    宠物商店V4.0版源码 (PetShop V4.0)

    本节将引领读者逐步了解PetShop 4.0的方方面面,包括应用程序安装、功能和用户界面简介、解决方案和体系架构概述等。 由于采用了Master Pages,Membership,以及Profile,表现层的编码量减少了25%,数据层 的编码 量...

    宠物商店 v4.0 源码.rar

    利用ASP.NET 2.0的Custom Oracle 和SQL Server Profile Providers 做用户状态管理,包括购物车等 6。采用了Master Pages,取代了原来的用户控件,来实现统一的界面效果 7。使用了ASP.NET 2.0 Wizard控件实现check-...

    Ace Admin v1.3.5

    包含如下网页模板 Dashboard with stats, charts and recent events UI elements Buttons ... User profile Login, register and forgot password Error 404 and error 500 pages And a few other

    中国鲜花专递网模型

    采用软件Microsoft Visual Studio 2005和SQLSERVER2000 ,本网站是模仿中国鲜花专递网制作,采用语言C#。购物车采用最先进的profile技术。采用三层构架。仅供学习,请不要用于任何商业用途

    PetShop4.0宠物商店+系统架构设计+中文注释源码+PDF中文详解

    7、 IProfile.cs文件:定义一组在DAL层编写的“对用户Profile进行操作的类” 三、启发: 1、 这样就可以让在BLL层只针对IDAL层定义的接口进行编程(使用IDAL接口定义的这些方法)就可以了!!!无论在底层使用了...

    ASP.NET与AJAX深度剖析范例集_卷2(源代码)

    深入探讨DataSource的应用 第6章 ASP.NET 2.0登录与身份验证机制 第7章 ProFile范例——制作用户配置文件 第8章 MasterPage范例——使用母版页 第9章 Theme与Skin范例 第10章 WebParts范例 第11章...

    ASP. NET与AJAX深度剖析范例集_卷1(共2卷)(源代码)

    深入探讨DataSource的应用 第6章 ASP.NET 2.0登录与身份验证机制 第7章 ProFile范例——制作用户配置文件 第8章 MasterPage范例——使用母版页 第9章 Theme与Skin范例 第10章 WebParts范例 第11章...

    机架获取参数实验室onl01-seng-ft-090820

    词汇词:“路线” 在基于Rack的应用程序中,我们使用名词“ route”来指代应用程序具有特殊响应的路径。 因此, /shoes “路线”显示有关鞋子的信息。 /profile “路由”显示有关已登录用户的信息。 /logout路由会...

    宠物商店 v4.0

    本节将引领读者逐步了解PetShop4.0的方方面面,包括应用程序安装、功能和用户界面简介、解决方案和体系架构概述等。 由于采用了MasterPages,Membership,以及Profile,表现层的编码量减少了25%,数据层的编码量减少...

    rack-get-params-lab-online-web-sp-000

    词汇词:“路线”在基于Rack的应用程序中,我们使用名词“ route”来指代应用程序对其有特殊响应的路径。因此, /shoes “路线”显示了有关鞋子的信息。 /profile “路由”显示有关已登录用户的信息。 /logout路由会...

    xushop开源电子商务系统

    /my/profile 5.1.18.会员收藏夹 管理会员所有的收藏页面 /Favorite 5.1.19.会员购买过的产品 显示会员购买过的产品,方便下次订购。 /my/products 5.1.20.产品搜索 根据关键词搜索产品。 /search/ /search/result?k=...

Global site tag (gtag.js) - Google Analytics