项目7设计网上书店购物车.ppt

上传人:夏** 文档编号:568257352 上传时间:2024-07-23 格式:PPT 页数:27 大小:628.50KB
返回 下载 相关 举报
项目7设计网上书店购物车.ppt_第1页
第1页 / 共27页
项目7设计网上书店购物车.ppt_第2页
第2页 / 共27页
项目7设计网上书店购物车.ppt_第3页
第3页 / 共27页
项目7设计网上书店购物车.ppt_第4页
第4页 / 共27页
项目7设计网上书店购物车.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《项目7设计网上书店购物车.ppt》由会员分享,可在线阅读,更多相关《项目7设计网上书店购物车.ppt(27页珍藏版)》请在金锄头文库上搜索。

1、项目七项目七 设计网上书店购物车设计网上书店购物车ASP.NET 案例开发案例开发建立站点建立站点建立站点,为站点添加两个文件夹books和images.并分别添加现有项(图片)。在站点内新建名为BookInfoGridView.aspx和BookView.aspx的两个页面。主要任务主要任务任务7-1: 设计图书购买界面任务7-2: 设计购物车商品信息类和购物车类任务7-3 :实现匿名用户使用购物车任务7-4 :实现匿名用户购物车到注册用户购物车的迁移 任务任务7-1 设计图书购买界面设计图书购买界面 在BookInfoGridView.aspx页面上添加一个GridView和一个SqlDa

2、taSource 控件。配置SqlDataSource 的数据源,在配置Select语句步骤按照下图设置,其他采取默认,直到完成。单击GridView1控件的智能按钮,在套用格式下选择彩色型,并设置数据源为SqlDataSource1。单击编辑列命令,打开字段对话框。将bookID的Visible属性设置为False.在左上可用字段中,单击HyperLinkField,再单击“添加”按钮。在左下选定的字段中,单击该HyperLinkField,在右边设置其属性:HeaderText值为”详细信息”,Text值为“查看”,DataNavigateUrlFormatString值为“/BookVi

3、ew.aspx?bookID=0”, DataNavigateUrlFields值为”bookID”.设置完成后单击“确定”。设置GridView1允许分页。在BookView.aspx页面上添加一个DataList,一个SqlDataSource,一个HyperLink和一个名为labBookID的标签控件。设置HyperLink的Text属性值为“返回图书列表页面”,NavigateUrl属性值为“/BookInfoGridView.aspx”。配置SqlDataSource的数据源,进行如下图的设置后,单击“WHERE”按钮。在添加WHERE字句对话框进行如下设置后单击“添加”按钮,其他

4、采取默认,直到完成。设置DataList控件的数据源为SqlDataSource1。并单击“编辑模板”命令。按照下页图设置模板。其中”购买”为一个LinkButton控件,单击它的智能按钮编辑绑定,将CommandArgument绑定到bookID.在属性窗口的事件事件列表中,双击Command,编辑如下代码(暂时):protected void LinkButton1_Command(object sender, CommandEventArgs e) Response.Write(alert(购买成功!); 将DataList中左上角图片控件绑定到字段picturePath.将“购买”左边

5、的图片控件的imageUrl属性设置为/images/cart.gif。最上面绿色标签绑定到bookName字段。完成后结束模板编辑。在Page_Load中添加如下代码: if (!IsPostBack) labBookID .Text =Request .QueryString bookID; 分别将标签绑定到不同字段任务任务7-2 设计购物车商品信息类和购物车类设计购物车商品信息类和购物车类 购物车的每个商品可以用一个实体类进行描述。用户使用购物车需要能够将选购商品放置到购物车中,能够从购物车中移除商品,还要能够修改购物车中商品数量,这些操作可以封装在一个购物车操作类中。购物车中图书信息包

6、含图书的编号、书名、价格、数量、小计信息。小计是通过价格和数量相乘的结果。购物车的每本图书可以用一个实体类(CartItem)描述。CartItem类以面向对象的方式构建了购物车中的单条商品对象。 购物车中一般有多本图书,可以用哈希表来存储,使用图书的编号作为哈希表的键,存储图书信息的实体对象作为哈希表的值。购物车类(ShoppingCart)对购物车的操作实际上是对哈希表的操作。购物车要能实现图书信息的添加、从购物车中移除图书信息和重新设置购物车中图书数量功能。 本任务将介绍存储图书信息的实体类和购物车类的设计过程。为站点添加App_Code文件夹,在该文件夹下添加CS(类)文件CartIt

7、em.cs和ShoppingCart.cs (类)文件。 设计CartItem.cs文件内容(设计购物车商品信息类)。Serializablepublic class CartItem private int m_bookID; private String m_bookName; private decimal m_bookPrice; private int m_quantity = 1; public int BookID get return m_bookID; public String BookName get return m_bookName; public decimal B

8、ookPrice get return m_bookPrice; public int Quantity get return m_quantity; set m_quantity = value; public decimal SubTotalPrice get return m_bookPrice * m_quantity; public CartItem(int bookID, String bookName, decimal bookPrice) m_bookID = bookID; m_bookName = bookName; m_bookPrice = bookPrice;设计Sh

9、oppingCart.cs文件(设计购物车类)。代码参考程序中文件。CartItem类和ShoppingCart类构建的哈希表将被以二进制序列化方式存储到配置数据库的aspnet_Profile表中,因此,两个类的类名前都用“ ”标记一个属性Serializable。该属性指示类被序列化。序列化是指将对象实例的状态存储到存储介质的过程。在此过程中,先将对象公共字段、私有字段以及类名转换为字节流,然后再把字节流写入数据流。对对象进行反序列化时,将创建出与原对象完全相同的副本。 任务任务7-3 实现匿名用户使用购物车实现匿名用户使用购物车 当登录用户访问购物网站,并单击“购买”时,商品会先被加入购

10、物车。匿名用户(未登录)则一般是先查看自己感兴趣的商品,可以将商品加入购物车,当匿名用户希望购买购物车中的物品时,则需要进行登录。购物车页面设计可以用GridView控件实现。购物车类的CartItems属性保存购买的商品信息,并为GridView控件提供数据源。使用个性化服务配置购物车:匿名用户登录网站时,网站分配匿名用户ID,匿名用户可以使购物车的信息保存到配置数据库中。当匿名用户再一次登录网站时,可以从配置文件中获得购物车信息。 设计购物车界面设计购物车界面在站点添加ShoppingCartPage.aspx页面。在页面添加两个标签,一个GridView,一个HyperLink控件。布局

11、如下图。标签的ID属性分别为:labMsg,labTotalPrice.将labMsg的字体颜色设置为红色,用来显示提示信息。设置超链接的NavigateUrl属性值为“/BookInfoGridView.aspx”。购物车中图书的总价格在“labTotalPrice”中呈现。 设置GridView控件的Caption属性为”购物车”,DataKeyNames属性值为”BookID”,通过“BookID”可以唯一标识一本图书。ShowFooter为“True”,AutoGenerateColumns为False.在母版页上添加超链接HyperLink控件,设置其Text属性值为“查看购物车”,

12、NavigateUrl属性值为“/ShoppinCartPage.aspx”。单击GridView1的智能标记,设置一个“自动套用格式”选项。单击“编辑列”,添加CommandField的“选择”项,设置其“HeaderText”和”SelectText”属性值为“清除,ShowSelectButton属性值为”true”。再添加4个BoundField字段。这4个绑定字段的”DataField”和” HeaderText”属性值分别为“BookID”“图书编号”, “BookName”“图书名称”, “BookPrice”“销售价格”, “SubTotalPrice”“价格小计”。将两个表示

13、价格的绑定字段的DataFormatString值设置为0:c。再添加一个TemplateField字段,设置其HeaderText属性值为“更新数量”。单击GridView1的智能标记,单击“编辑模板”。在ItemTemplate模板上添加一个文本框,修改ID属性值为txbBookQuantity,Width为50px。单击文本框的智能标记,单击“编辑DataBindings”,打开数据绑定对话框,将Text属性的“自定义绑定”表达式设置为“Bind(”Quantity“)”,单击确定。在属性窗口的事件列表中,双击TextChanged事件(稍后添加代码),表示当购买数量发生更新时要更新购物

14、车中相应图书的数量。 切换GridView1控件智能标记到FooterTemplate.添加两个LinkButton,ID属性分别为“lbtUpdate”和“lbtBuy”,Text属性分别为“更新”和“购买”,单击lbtBuy,在事件列表的Click事件上双击,进入到lbtBuy_Click事件的编辑状态(稍后添加代码)。切换到EmptyDataTemplate界面,设置如下图。完成后结束模板编辑。单击GridView1,在属性窗口的事件列表中,双击SelectedIndexChanged事件(稍后添加代码)。当选择一本图书时执行该事件,购物车设计中将该事件定义为删除图书的操作。匿名用户购物

15、车个性化设置匿名用户购物车个性化设置 匿名用户登录网站,网站将给匿名用户产生一个ID,用于标识匿名用户的身份。使用aspnet_regsql工具在NetBook数据库中创建存储profile信息的表结构,存储过程及视图。匿名用户登录网站的信息将写入表aspnet_Users中。匿名用户使用购物车的信息将写入表aspnet_Profile中。设计匿名用户购物车需要对Web.Config进行设置。代码见站点的Web.Config文件内容。1)配置个性化服务默认数据库连接词 在配置节的子配置节配置节下添加访问NetBook数据库的连接词。配置代码段如下: 首先移除系统默认的数据库连接词“LocalS

16、qlServer”,然后定义NetBook数据库连接词“LocalSqlServer”。 配置节的子配置节的属性defaultProvider设置缺省的连接对象名MyProfileProvider,在子配置节下添加连接配置项。 缺省的连接对象名数据库连接名应用程序名允许匿名用户访问数据库“ShoppingCart”配置项 项目类型为自定义的购物车类 购物车将被序列化为二进制数据存储到数据库中 允许匿名用户使用购物车 实现图书信息添加到购物车中功能实现图书信息添加到购物车中功能 本步骤将实现任务7-1中的图书信息加入购物车的事件代码(即在BookView.aspx页面单击“购买”后,执行的事件代

17、码)。从profile配置信息中获取购物车,当匿名用户第一次访问网站购物时,配置信息中的购物车对象为空,需要创建购物车对象,并保存到配置项中。从配置项中获取购物车类对象,调用购物车类对象的AddBook方法将图书信息保存到购物车对象中。代码见BookView.aspx.cs文件的LinkButton1_Command事件。实现呈现购物车中的图书信息功能实现呈现购物车中的图书信息功能 从profile配置信息中读取购物车对象ShoppingCart,该对象的属性CartItems保存了购物车中的商品信息,将CartItems作为数据源绑定到购物车页面的“GridView1”的DataSource

18、属性上,执行“GridView1”对象的DataBind()方法可以呈现购物车的图书信息。使用ShoppingCart对象( ShoppingCart类的对象)的TotalPrice属性获取购物车中所有图书的总价格。在ShoppingCartPage类中添加BindShoppingCart方法,代码见ShoppingCartPage .aspx.cs文件。且在Page_Load事件添加如下代码:if (!IsPostBack) BindShoppingCart(); 实现删除购物车中的图书信息功能实现删除购物车中的图书信息功能 首先从购物车页面“GridView1”对象的SelectedDat

19、aKey属性中获取被选择行的DataKey对象,DataKey对象的Value属性保存了图书的编号“BookID”。将图书编号作为购物车对象ShoppingCart 的方法RemoveBook的参数,实现从购物车中移除图书的操作。代码见ShoppingCartPage .aspx.cs文件的GridView1_SelectedIndexChanged事件。实现更新购物车中图书的购买数量功能实现更新购物车中图书的购买数量功能 读取profile配置信息中购物车对象ShoppingCart,使用ShoppingCart对象的方法SetQuantity更新购物车中图书的订购数量。执行SetQuant

20、ity方法时,传输两个参数“图书编号”和“订购数量”。更新成功则重新呈现更新后的结果,更新失败则给出“购买数量为大于0的整型数字!”的提示信息。代码见ShoppingCartPage .aspx.cs文件的txbBookQuantity_TextChanged事件。任务任务7-4 实现匿名用户购物车到注册用户购物车的迁移实现匿名用户购物车到注册用户购物车的迁移 上一任务中解决了匿名用户使用购物车功能。网站允许匿名用户登录,并使用购物车选商品,这时购物车中显示的商品是用户在匿名方式下所选择的商品列表,当用户希望下订单购买购物车中的商品时,需要用户使用注册账号登录站点,才可以继续进行购买操作。用户

21、的购买操作是针对注册用户的购物车进行的,因此,需要将匿名用户购物车中的商品列表转移到注册用户购物车中,实现匿名用户向注册用户的迁移。代码见ShoppingCartPage .aspx.cs文件的lbtBuy_Click事件(购物车界面上单击购买后执行的事件)。创建用户及简单的登录界面创建用户及简单的登录界面单击“网站”菜单下的“ ASP.NET配置”菜单项,创建用户账户。为站点建立Login.aspx页面,在页面添加Login控件。设置Login 控件的DestinationPageUrl属性值为“/BookInfoGridView.aspx”。当用户使用分配的帐号登录网站时,系统需要实现匿名

22、用户向注册用户的迁移,将匿名用户购物车内商品列表迁移到注册用户购物车内。 当完成数据迁移后,用户退出登录,关闭客户端浏览器,然后再打开浏览器以匿名用户访问网站,匿名用户购物车中商品列表将被清空,应用程序为减少无用数据,应删除上次匿名用户所生成的数据。当用户使用上次登录站点的帐号登录网站时,购物车中将显示用户购买的商品列表。表明匿名购物车中数据已转移到注册用户购物车中。实现匿名用户购物车配置数据向注册用户配置数据迁移实现匿名用户购物车配置数据向注册用户配置数据迁移 实现匿名用户购物车数据向注册用户购物车数据迁移的关键是实现ProfileModule类MigrateAnonymous事件。该事件在

23、包含用户配置属性数据的匿名用户登录时发生,对应的事件处理程序是Profile_MigrateAnonymous。与其它事件处理程序不同的是该事件处理程序必须在Global.asax文件中定义。在站点根目录添加Global.asax文件。在Global.asax中添加事件处理程序Profile_MigrateAnonymous,事件处理程序主要实现3个任务:一是从匿名用户的Profile属性中复制相关信息,并将其存储到注册用户的Profile属性中;二是为减少数据冗余删除数据库中存储的匿名用户的用户配置数据;三是删除匿名用户标识,以免再次为登录的用户激发MigrateAnonymous事件。 代

24、码见Global.asax文件的Profile_MigrateAnonymous事件。该事件中调用的方法MergerBooks,为在ShoppingCart.cs文件中定义的方法。为了减少冗余数据,调用Membership类的DeleteUser方法从aspnet_Users表中删除匿名用户数据,调用ProfileManager类的DeleteProfile方法删除匿名用户存储在aspnet_Profile表中匿名用户配置属性数据。为了不让MigrateAnonymous事件再次激发,还需要调用AnonymousIdentificationModule类的ClearAnonymousIdentifier方法删除匿名用户标识。作业作业

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号