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

上传人:zhu****ei 文档编号:2882517 上传时间:2019-12-03 格式:PPT 页数:27 大小:628.50KB
返回 下载 相关 举报
项目7设计网上书店购物车.ppt_第1页
第1页 / 共27页
项目7设计网上书店购物车.ppt_第2页
第2页 / 共27页
项目7设计网上书店购物车.ppt_第3页
第3页 / 共27页
点击查看更多>>
资源描述
项目七 设计网上书店购物车,ASP.NET 案例开发,建立站点,建立站点,为站点添加两个文件夹books和images.并分别添加现有项(图片)。 在站点内新建名为BookInfoGridView.aspx和BookView.aspx的两个页面。,主要任务,任务7-1: 设计图书购买界面 任务7-2: 设计购物车商品信息类和购物车类 任务7-3 :实现匿名用户使用购物车 任务7-4 :实现匿名用户购物车到注册用户购物车的迁移,任务7-1 设计图书购买界面,在BookInfoGridView.aspx页面上添加一个GridView和一个SqlDataSource 控件。 配置SqlDataSource 的数据源,在配置Select语句步骤按照下图设置,其他采取默认,直到完成。,单击GridView1控件的智能按钮,在套用格式下选择彩色型,并设置数据源为SqlDataSource1。 单击编辑列命令,打开字段对话框。将bookID的Visible属性设置为False. 在左上可用字段中,单击HyperLinkField,再单击“添加”按钮。 在左下选定的字段中,单击该HyperLinkField,在右边设置其属性:HeaderText值为”详细信息”,Text值为“查看”,DataNavigateUrlFormatString值为“/BookView.aspx?bookID=0”, DataNavigateUrlFields值为”bookID”. 设置完成后单击“确定”。 设置GridView1允许分页。,在BookView.aspx页面上添加一个DataList,一个SqlDataSource,一个HyperLink和一个名为labBookID的标签控件。 设置HyperLink的Text属性值为“返回图书列表页面”,NavigateUrl属性值为“/BookInfoGridView.aspx”。 配置SqlDataSource的数据源,进行如下图的设置后,单击“WHERE”按钮。,在添加WHERE字句对话框进行如下设置后单击“添加”按钮,其他采取默认,直到完成。 设置DataList控件的数据源为SqlDataSource1。并单击“编辑模板”命令。按照下页图设置模板。其中”购买”为一个LinkButton控件,单击它的智能按钮编辑绑定,将CommandArgument绑定到bookID.在属性窗口的事件列表中,双击Command,编辑如下代码(暂时): protected void LinkButton1_Command(object sender, CommandEventArgs e) Response.Write(“alert(购买成功!)“); 将DataList中左上角图片控件绑定到字段picturePath. 将“购买”左边的图片控件的imageUrl属性设置为/images/cart.gif。,最上面绿色标签绑定到bookName字段。完成后结束模板编辑。在Page_Load中添加如下代码: if (!IsPostBack) labBookID .Text =Request .QueryString “bookID“; ,分别将标签绑定到不同字段,任务7-2 设计购物车商品信息类和购物车类,购物车的每个商品可以用一个实体类进行描述。用户使用购物车需要能够将选购商品放置到购物车中,能够从购物车中移除商品,还要能够修改购物车中商品数量,这些操作可以封装在一个购物车操作类中。 购物车中图书信息包含图书的编号、书名、价格、数量、小计信息。小计是通过价格和数量相乘的结果。购物车的每本图书可以用一个实体类(CartItem)描述。CartItem类以面向对象的方式构建了购物车中的单条商品对象。 购物车中一般有多本图书,可以用哈希表来存储,使用图书的编号作为哈希表的键,存储图书信息的实体对象作为哈希表的值。购物车类(ShoppingCart)对购物车的操作实际上是对哈希表的操作。 购物车要能实现图书信息的添加、从购物车中移除图书信息和重新设置购物车中图书数量功能。 本任务将介绍存储图书信息的实体类和购物车类的设计过程。,为站点添加App_Code文件夹,在该文件夹下添加CS(类)文件CartItem.cs和ShoppingCart.cs (类)文件。 设计CartItem.cs文件内容(设计购物车商品信息类)。,Serializable public 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 BookPrice 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; ,设计ShoppingCart.cs文件(设计购物车类)。 代码参考程序中文件。 CartItem类和ShoppingCart类构建的哈希表将被以二进制序列化方式存储到配置数据库的aspnet_Profile表中,因此,两个类的类名前都用“ ”标记一个属性Serializable。该属性指示类被序列化。 序列化是指将对象实例的状态存储到存储介质的过程。在此过程中,先将对象公共字段、私有字段以及类名转换为字节流,然后再把字节流写入数据流。对对象进行反序列化时,将创建出与原对象完全相同的副本。,任务7-3 实现匿名用户使用购物车,当登录用户访问购物网站,并单击“购买”时,商品会先被加入购物车。 匿名用户(未登录)则一般是先查看自己感兴趣的商品,可以将商品加入购物车,当匿名用户希望购买购物车中的物品时,则需要进行登录。 购物车页面设计可以用GridView控件实现。购物车类的CartItems属性保存购买的商品信息,并为GridView控件提供数据源。 使用个性化服务配置购物车:匿名用户登录网站时,网站分配匿名用户ID,匿名用户可以使购物车的信息保存到配置数据库中。当匿名用户再一次登录网站时,可以从配置文件中获得购物车信息。,设计购物车界面,在站点添加ShoppingCartPage.aspx页面。在页面添加两个标签,一个GridView,一个HyperLink控件。布局如下图。 标签的ID属性分别为:labMsg,labTotalPrice.将labMsg的字体颜色设置为红色,用来显示提示信息。 设置超链接的NavigateUrl属性值为“/BookInfoGridView.aspx”。购物车中图书的总价格在“labTotalPrice”中呈现。,设置GridView控件的Caption属性为”购物车”,DataKeyNames属性值为”BookID”,通过“BookID”可以唯一标识一本图书。ShowFooter为“True”,AutoGenerateColumns为False. 在母版页上添加超链接HyperLink控件,设置其Text属性值为“查看购物车”,NavigateUrl属性值为“/ShoppinCartPage.aspx”。,单击GridView1的智能标记,设置一个“自动套用格式”选项。单击“编辑列”,添加CommandField的“选择”项,设置其“HeaderText”和”SelectText”属性值为“清除,ShowSelectButton属性值为”true”。 再添加4个BoundField字段。这4个绑定字段的”DataField”和” HeaderText”属性值分别为“BookID”“图书编号”, “BookName”“图书名称”, “BookPrice”“销售价格”, “SubTotalPrice”“价格小计”。将两个表示价格的绑定字段的DataFormatString值设置为0:c。 再添加一个TemplateField字段,设置其HeaderText属性值为“更新数量”。 单击GridView1的智能标记,单击“编辑模板”。在ItemTemplate模板上添加一个文本框,修改ID属性值为txbBookQuantity,Width为50px。单击文本框的智能标记,单击“编辑DataBindings”,打开数据绑定对话框,将Text属性的“自定义绑定”表达式设置为“Bind(”Quantity“)”,单击确定。在属性窗口的事件列表中,双击TextChanged事件(稍后添加代码),表示当购买数量发生更新时要更新购物车中相应图书的数量。,切换GridView1控件智能标记到FooterTemplate. 添加两个LinkButton,ID属性分别为“lbtUpdate”和“lbtBuy”,Text属性分别为“更新”和“购买”,单击lbtBuy,在事件列表的Click事件上双击,进入到lbtBuy_Click事件的编辑状态(稍后添加代码)。 切换到EmptyDataTemplate界面,设置如下图。 完成后结束模板编辑。 单击GridView1,在属性窗口的事件列表中,双击SelectedIndexChanged事件(稍后添加代码)。当选择一本图书时执行该事件,购物车设计中将该事件定义为删除图书的操作。,匿名用户购物车个性化设置,匿名用户登录网站,网站将给匿名用户产生一个ID,用于标识匿名用户的身份。使用aspnet_regsql工具在NetBook数据库中创建存储profile信息的表结构,存储过程及视图。匿名用户登录网站的信息将写入表aspnet_Users中。匿名用户使用购物车的信息将写入表aspnet_Profile中。 设计匿名用户购物车需要对Web.Config进行设置。 代码见站点的Web.Config文件内容。 1)配置个性化服务默认数据库连接词 在配置节的子配置节配置节下添加访问NetBook数据库的连接词。配置代码段如下:,首先移除系统默认的数据库连接词“LocalSqlServer”,然后定义NetBook数据库连接词“LocalSqlServer”。,配置节的子配置节的属性defaultProvider设置缺省的连接对象名MyProfileProvider,在子配置节下添加连接配置项。,缺省的连接对象名,数据库连接名,应用程序名,允许匿名用户访问数据库,“ShoppingCart”配置项,项目类型为自定义的购物车类,购物车将被序列化为二进制数据存储到数据库中,允许匿名用户使用购物车,实现图书信息添加到购物车中功能,本步骤将实现任务7-1中的图书信息加入购物车的事件代码(即在BookView.aspx页面单击“购买”后,执行的事件代码)。 从profile配置信息中获取购物车,当匿名用户第一次访问网站购物时,配置信息中的购物车对象为空,需要创建购物车对象,并保存到配置项中。 从配置项中获取购物车类对象,调用购物车类对象的AddBook方法将图书信息保存到购物车对象中。 代码见BookView.aspx.cs文件的LinkButton1_Command事件。,实现呈现购物车中的图书信息功能,从profile配置信息中读取购物车对象ShoppingCart,该对象的属性CartItems保存了购物车中的商品信息,将CartItems作为数据源绑定到购物车页面的“GridView1”的DataSource属性上,执行“GridView1”对象的DataBind()方法可以呈现购物车的图书信息。 使用ShoppingCart对象( ShoppingCart类的对象)的TotalPrice属性获取购物车中所有图书的总价格。 在ShoppingCartPage类中添加BindShoppingCart方法,代码见ShoppingCartPage .aspx.cs文件。且在Page_Load事件添加如下代码: if (!IsPostBack) BindShoppingCart(); ,实现删除购物车中的图书信息功能,首先从购物车页面“GridView1”对象的SelectedDataKey属性中获取被选择行的DataKey对象,DataKey对象的Value属性保存了图书的编号“BookID”。 将图书编号作为购物车对象ShoppingCart 的方法RemoveBook的参数,实现从购物车中移除图书的操作。代码见ShoppingCartPage .aspx.cs文件的GridView1_SelectedIndexChanged事件。,实现更新购物车中图书的购买数量功能,读取profile配置信息中购物车对象ShoppingCart,使用ShoppingCart对象的方法SetQuantity更新购物车中图书的订购数量。执行SetQuantity方法时,传输两个参数“图书编号”和“订购数量”。 更新成功则重新呈现更新后的结果,更新失败则给出“购买数量为大于0的整型数字!”的提示信息。 代码见ShoppingCartPage .aspx.cs文件的txbBookQuantity_TextChanged事件。,任务7-4 实现匿名用户购物车到注册用户购物车的迁移,上一任务中解决了匿名用户使用购物车功能。网站允许匿名用户登录,并使用购物车选商品,这时购物车中显示的商品是用户在匿名方式下所选择的商品列表,当用户希望下订单购买购物车中的商品时,需要用户使用注册账号登录站点,才可以继续进行购买操作。 用户的购买操作是针对注册用户的购物车进行的,因此,需要将匿名用户购物车中的商品列表转移到注册用户购物车中,实现匿名用户向注册用户的迁移。 代码见ShoppingCartPage .aspx.cs文件的lbtBuy_Click事件(购物车界面上单击购买后执行的事件)。,创建用户及简单的登录界面,单击“网站”菜单下的“ ASP.NET配置”菜单项,创建用户账户。 为站点建立Login.aspx页面,在页面添加Login控件。 设置Login 控件的DestinationPageUrl属性值为“/BookInfoGridView.aspx”。 当用户使用分配的帐号登录网站时,系统需要实现匿名用户向注册用户的迁移,将匿名用户购物车内商品列表迁移到注册用户购物车内。 当完成数据迁移后,用户退出登录,关闭客户端浏览器,然后再打开浏览器以匿名用户访问网站,匿名用户购物车中商品列表将被清空,应用程序为减少无用数据,应删除上次匿名用户所生成的数据。 当用户使用上次登录站点的帐号登录网站时,购物车中将显示用户购买的商品列表。表明匿名购物车中数据已转移到注册用户购物车中。,实现匿名用户购物车配置数据向注册用户配置数据迁移,实现匿名用户购物车数据向注册用户购物车数据迁移的关键是实现ProfileModule类MigrateAnonymous事件。该事件在包含用户配置属性数据的匿名用户登录时发生,对应的事件处理程序是Profile_MigrateAnonymous。与其它事件处理程序不同的是该事件处理程序必须在Global.asax文件中定义。在站点根目录添加Global.asax文件。 在Global.asax中添加事件处理程序Profile_MigrateAnonymous,事件处理程序主要实现3个任务:一是从匿名用户的Profile属性中复制相关信息,并将其存储到注册用户的Profile属性中;二是为减少数据冗余删除数据库中存储的匿名用户的用户配置数据;三是删除匿名用户标识,以免再次为登录的用户激发MigrateAnonymous事件。 代码见Global.asax文件的Profile_MigrateAnonymous事件。 该事件中调用的方法MergerBooks,为在ShoppingCart.cs文件中定义的方法。,为了减少冗余数据,调用Membership类的DeleteUser方法从aspnet_Users表中删除匿名用户数据,调用ProfileManager类的DeleteProfile方法删除匿名用户存储在aspnet_Profile表中匿名用户配置属性数据。为了不让MigrateAnonymous事件再次激发,还需要调用AnonymousIdentificationModule类的ClearAnonymousIdentifier方法删除匿名用户标识。,作业,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!