登陆注册
8724600000033

第33章 软件构造(12)

Handles btnReturn.Click

Me.ShowQuery()

End Sub

6.6.4如何实现购物车功能

购物车是商务网站常见的一种功能。它把用户在该网站浏览时所感兴趣的、有购买意向的商品或相关服务短暂记录在客户端。只要用户还处于登录状态就可以随时查看、修改、编辑他所选择的商品。如果用户觉得他所选择的商品非常满意,就可以提交,把商品的相关信息提交到服务器端处理。此时用户所选的商品已经成为历史,不能再进行修改。用户把喜欢的商品都放到购物车里,最后到出口处进行结账,这个过程非常像在超市里买东西。结账就意味着交易完成,这就相当于用户把商品信息提交到服务器端。

在实现购物车功能时,要用到cookie技术。cookie用来保存用户在登录期间,在该网站所有放入购物车中的商品信息。因为cookie中存放的信息字节有限(不能超过4096 字节),所以一般在cookie里只保存该用户放入购物车中的商品id号(数据库设计时专门有一张商品表,每一种商品有唯一的标识id,作为主键),以及用户需要修改的信息,比如所购商品的数量。而商品的其他信息,可以根据商品id从数据库中读出来,再显示到前台页面,用DataGrid显示购物车中的商品信息。顾客对购物车中的商品信息进行编辑。用户也可以清空购物车,购物车的清空状态。编辑结果可存入商品数据库表中,商品数据库表。

下面是实现购物车功能的代码:

Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load

’在此处放置初始化页的用户代码

ErrMsg.Text=””

’声明cookie

Dim cookie As HttpCookie

’商品的id

Dim Productid As Integer

’商品是否添加的标志

Dim isexist As Boolean=False

If Not IsPostBack Then

’判断前一个页面是否把批Productid通过查询字符串传递过来

If Not Request.QueryString(”ProductId”)Is Nothing Then

Productid=CInt(Request.QueryString(”productId”).ToString())

’获取Cookie(ProductCart)

If Request.Cookies(”ProductCart”)Is Nothing Then

cookie=New HttpCookie(”ProductCart”)

Else

cookie=Request.Cookies(”ProductCart”)

End If

Dim i As Integer

’循环读出Cookie(ProductCart)中所保存用户添加到购物车中的商品的信息

For i=0 To cookie.Values.Count—1

If Not cookie.Values.AllKeys(i)Is Nothing Then

Dim tempstr As String=cookie.Values.AllKeys(i).ToString

If tempstr.Trim()<>””Then

’判断当前添加的商品购物车是否已经存在

If Productid=CInt(cookie.Values.AllKeys(i))Then

isexist=True

Exit For

End If

End If

End If

Next

’购物车里没有改商品,把它添加到购物车了,默认数量为1

If Not isexist Then

cookie.Values.Add(Productid.ToString(),”1”)

Else

ShowErrMsg(”此产品已经添加过了”)

End If

’设置cookie生存时间

Dim ts As TimeSpan=New TimeSpan(0,0,10,0)

cookie.Expires=DateTime.Now.Add(ts)

Response.AppendCookie(cookie)

End If

’把购物车里的商品信息通过DataGrid显示出来

BindGrid()

End If

End Sub

Private Sub ShowErrMsg(ByVal er As String)

ErrMsg.Visible=True

ErrMsg.Text=”<script language="javascript"> alert("”&er&”")</script>”

End Sub

Private Sub BindGrid()

’声明一个datatable表数据结构

Dim mydt As New DataTable

Dim mydr As DataRow

’初始化表的结构

mydt.Columns.Add(New DataColumn(”id”,Type.GetType(”System.String”)))

mydt.Columns.Add(New DataColumn(”Name”,Type.GetType(”System.String”)))

mydt.Columns.Add(New DataColumn(”Price”,Type.GetType(”System.String”)))

mydt.Columns.Add(New DataColumn(”Number”,Type.GetType(”System.String”)))

mydt.Columns.Add(New DataColumn(”Unit”,Type.GetType(”System.String”)))

mydt.Columns.Add(New DataColumn(”Totle”,Type.GetType(”System.String”)))

If Not Request.Cookies(”ProductCart”)Is Nothing Then

Dim cookie As HttpCookie=Request.Cookies(”ProductCart”)

Dim i As Integer

For i=0 To cookie.Values.Count—1

Dim id As Integer

’新行实例化

mydr=mydt.NewRow

’声明数据库表中的一行

Dim row As T_ProductRow

Dim mynearfar As New Nearfar

’把cookie中保存的信息写到定义的表里

If cookie.Values.AllKeys(i)<>””And cookie.Values(i)<>””Then

id=CInt(cookie.Values.AllKeys(i))

’根据cookie中保存的productid查询数据库中商品的其他信息

row=mynearfar.T_ProductCollection.GetByPrimaryKey(id)

mydr(0)=id

同类推荐
  • 中文版AutoCAD2011基础与应用案例教程

    中文版AutoCAD2011基础与应用案例教程

    本书采用项目教学方式,通过大量案例全面介绍了AutoCAD2011软件的功能和应用技巧。全书共分8个项目,内容涵盖AutoCAD2011基本操作,绘制与编辑图形,标注尺寸,添加文字注释与应用表格,创建与应用块,绘制与编辑三维图形,图形输出等。
  • 一本书读懂24种互联网思维

    一本书读懂24种互联网思维

    本书整合的改变世界的24种互联网思维,让我们对互联网新思维的认识变得立体、系统起来;同时深入浅出、通俗易懂地从技术和实践分析互联网新思维与传统思维相比较的优势,医治互联网焦虑症。未来属于既能深刻理解传统商业的本质,同时又具备互联网思维的人。
  • 数字博物馆研究与实践:2009

    数字博物馆研究与实践:2009

    本书汇集了“2009年北京数字博物馆研讨会”与会代表提交的60余篇论文和演讲报告、应用案例,分为数字博物馆(科技馆)发展研究探讨、数字博物馆(科技馆)多样性发展模式、数字技术在博物馆(科技馆)展陈中的应用、数字博物馆(科技馆)建设实践、数字博物馆(科技馆)实现技术和数字博物馆调研报告等六个部分。本书内容囊括了对数字博物馆(科技馆)建设宏观层面的全局思考以及微观层面的具体实践。在宏观层面,介绍了数字博物馆(科技馆)在国内外的发展现状与趋势,通过剖析典型案例,探讨数字博物馆(科技馆)建设的意义、目标、作用、建设原则、要素、特征及目前建设工作中存在的现实问题与对策。
  • 如何处理电脑故障

    如何处理电脑故障

    本书以问答的方式介绍了电脑会出现的各种故障,内容包括了音箱声音失真,如何处理?如何做好电脑的日常维护等等问题。
  • 初级会计电算化

    初级会计电算化

    本书是作者根据历年会计从业资格考试的考试大纲以及多年对真题的分析,并结合多为专家、学者的实践经验而编写的。本书主要分为八套模拟试卷,以对考生考前的学习进行模拟实战,达到提高考生成绩的目的。
热门推荐
  • 新课改·高一思想政治备课素材

    新课改·高一思想政治备课素材

    《高1思想政治备课素材(全1册)(新课改)》内容科学全面,素材直观生动,针对性强,目的是提高教师拥有知识的水平和数量、深度和广度,使教师成为一个知识广博的人,在教学工作中做到举一反三、触类旁通,带领学生在知识的海洋尽情地畅游,从而培养更多优秀的人才。
  • 末日之星球继承者

    末日之星球继承者

    开局一头驴,升级全靠吃。赵峰意外来到末世废土世界,成为星球继承者,和一头不靠谱的黑驴从此走上了拯救世界,种田升级之路
  • 一如初心对你的爱

    一如初心对你的爱

    一次吃火锅的相遇,注定了他与她之间的纠缠。初一,我离开,只是想让你完成你的梦想。初心,我知道,你离开只是为了让我们更好的相遇,
  • 晓槿

    晓槿

    晓槿,一个被老神棍从死人堆里拖出来的亡国太子,不仅要给这老王八打白工,还得用着他恨之入骨的“哥哥”的壳子,不人不鬼不仙不魔,凭着老神棍的那点儿灵力,在人间到处晃悠,为业绩不得不忽悠别人和他做交易,只要目的达到,过程都不重要,脸皮什么通通不要。江湖人称“晓公子”。可人活久了,就会慢慢看清许多东西,像那位“哥哥”并不是记忆里那样冷酷,像所有求而不得的,都不一定是自己真正想要的,像有些遇见,一开始,就注定了离别。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 听闻王爷要我做夫君

    听闻王爷要我做夫君

    野林里,婴儿突然睁开双眸,陌生的高林里,夜色笼罩,黑暗之中是蛰伏各种吃人的怪兽。黎澄墨听着阵阵逼近的狼啸“死了又死,天要亡我”。二十年后,灵幻大陆上出了个绝世诡医,传闻他生性暴戾,喜怒无常,但在他手下救治的人,连阎王爷都抢不走。突降异世,她和他相遇,是谁撩拨了谁的心,又是谁护了谁的情。男强女强,1vs1
  • 弑命传说

    弑命传说

    辰星。三世转魂,为打破天道屏障,踏上漫长的追寻之路。
  • 天之贵女

    天之贵女

    花逐晓,皇城第一名媛,上有祭司义父、龙女老妈撑腰,下有男宠司月忠贞不二,日子十分逍遥。可是,第一名媛不好当,某一天与亲亲男宠擦枪走火被抓,名媛也要流放!于是,男宠被杀,自己也被送出了皇城,义父发话了,要她在云浮城成亲!什么?老妈要的烟波图在云浮城?找!云浮城的公子小姐们,还不快快交出美男和烟波图,本宫是天之贵女!
  • 穿越世勋爱上你

    穿越世勋爱上你

    在一场流星中,他被砸中了,醒来后在一个陌生的地方。。。。。
  • 最初游戏

    最初游戏

    睡觉!怪物!逃命!世界末日了?锻炼!杀怪!升级!你们重生的!这是一个遍地重生流大佬的末世……