首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> 移动开发教程
使用hashtable实现的购物车-ASP教程,ASP应用
作者:网友供稿 点击:496
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
<%@ page language="vb" contenttype="text/html" debug="true"%>

<%@ import namespace="system.data" %>

<%@ import namespace="system.data.oledb" %>

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=gb2312">

<title>无标题文档</title>

<style type="text/css">

<!--

td {

font-size: 9pt;

line-height: 24px;

}

-->

</style>

<style type="text/css">

<!--

a:link {

color: #000000;

text-decoration: none;

}

a:hover {

color: #ff0000;

text-decoration: none;

}

a:visited {

text-decoration: none;

}

-->

</style>

</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<form runat="server">

<!--#include virtual="header.htm"-->

<table width="776" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="159">&nbsp; </td>

<td width="617"><table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="17%" height="26"><p>&nbsp;</p>

<p>您所选购的商品</p></td>

<td width="2%" height="26">&nbsp;</td>

<td width="81%" height="26">&nbsp;</td>

</tr>

<tr>

<td height="26">&nbsp;</td>

<td height="26">&nbsp;</td>

<td height="26"><asp:datagrid id="dgcar" runat="server"

autogeneratecolumns="false"

bordercolor="#000000"

borderwidth="1"

cellpadding="3"

headerstyle-backcolor="#990000"

headerstyle-forecolor="#ffffff"

datakeyfield="title_id"

>

<columns>

<asp:boundcolumn headertext="商品" datafield="title" itemstyle-width="300"></asp:boundcolumn>

<asp:templatecolumn headertext="数量">

<itemtemplate>

<asp:textbox size=1 id="qty" runat="server"

text=<%# databinder.eval(container.dataitem,"qty")%>/>

</itemtemplate>

</asp:templatecolumn>

<asp:boundcolumn headertext="单价" datafield="price" dataformatstring="{0:c}"></asp:boundcolumn>

<asp:boundcolumn headertext="总计" datafield="total" dataformatstring="{0:c}"></asp:boundcolumn>

<asp:templatecolumn headertext="删除">

<itemtemplate>

<asp:checkbox runat="server" id="del"/>

</itemtemplate>

</asp:templatecolumn>

</columns>

</asp:datagrid>

<asp:label runat="server" id="msg" text="购物车为空" />

<hr>

<div align="right">总计:

<asp:label id="lbltotal" runat="server" text="0"></asp:label>

<br>

折扣:<asp:label id="sale" runat="server" text="0.9"></asp:label><br>

应付:<asp:label id="realprice" runat="server" text="0" /></div>

<div align="center"><br>

<asp:imagebutton id="re_car" imageurl="images/cxjs.gif" runat="server" onclick="re_car_click" />

<asp:imagebutton id="buy" imageurl="images/qsyt.gif" runat="server" />

<asp:imagebutton id="clear" imageurl="images/qk.gif" runat="server" onclick="clear_click" />

<a href="display_all.aspx">继续购物</a></div></td>

</tr>

<tr>

<td height="26">&nbsp;</td>

<td height="26">&nbsp;</td>

<td height="26">&nbsp;</td>

</tr>

</table></td>

</tr>

</table>



<!--#include virtual="footer.htm"-->

</form>

</body>

</html>

<script runat="server">

sub page_load(src as object, e as eventargs)

if not ispostback then

取得用户要加入购物书的商品的id

dim product as string = request.querystring("title-id")

判断如果是用户所购买的第一件商品的话则那立一个hashtable

否则从session中将已经存在的hashtable取回

dim hash as hashtable

if session("car") is nothing then

hash = new hashtable

else

hash = session("car")

end if

判断用户所选购的商品是否已经存在于购物车中

如果不存在则将其加入购物车,如果存在则在原有数据上加1

if not hash.containskey(product) then

hash.add(product,1)

else

hash.item(product) +=1

end if

session("car")=hash

display()

end if

end sub

------------------用于显示商品的子程序--------------------

sub display()

dim i as integer

dim x as string



取得session中的hashtable

dim hash as hashtable

hash = session("car")



将所有选购的商品构造成为一个字符串

dim products as string

products = "("

for each x in hash.keys

products = products & x & ","

next

products = products & ")"



根据所购商品的字符串读取商品信息,然后放在producttable中

dim conn as oledbconnection

dim ds as new dataset

dim table1 as datatable

dim connstr as string = "provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("db3.mdb")

conn = new oledbconnection(connstr)

conn.open()



读取数据并将数据填充到table1中

dim comm as oledbdataadapter

dim strsql as string ="select title_id,title,price from titles where title_id in " & products

comm = new oledbdataadapter(strsql,conn)

comm.fill(ds,"product")

table1 = ds.tables("product")



向table1中增加一列

table1.columns.add(new datacolumn("qty",gettype(integer)))



将title设置为主键

dim keys() as datacolumn = {table1.columns("title_id")}

table1.primarykey=keys



向producttable表新增字段

for each x in hash.keys

table1.rows.find(x).item("qty")=hash.item(x)

next



向table1中增加总计列,并计算总计值

table1.columns.add(new datacolumn("total",gettype(double),"price*qty"))



判断购物车是否为空

if table1.rows.count =0 then

dgcar.visible="false"

msg.visible="true"

else

dgcar.visible="true"

msg.visible="false"

end if



计算帐单总价及折扣后的价格

lbltotal.text="0"

for i=0 to table1.rows.count-1

lbltotal.text =string.format("{0:c}",cdbl(lbltotal.text)+table1.rows(i).item("total"))

next

realprice.text = string.format("{0:c}",cdbl(sale.text) * lbltotal.text)

将数据绑定dgcar

dgcar.datasource=table1.defaultview

dgcar.databind()

conn.close

end sub

------------------用于清空购物车的事件程序---------------

sub clear_click(sender as object,e as imageclickeventargs)

将session("car")清空

session("car") = new hashtable()

lbltotal.text = "0"

realprice.text="0"

display()

end sub

------------------用于更新购物车的事件程序------------------

sub re_car_click(sender as object,e as imageclickeventargs)

判断session("car")是否存在,如果在刚将其取得保存在hash中

dim hash as hashtable

if session("car") is nothing then

hash = new hashtable

else

hash = session("car")

end if

依决检查每一行的数量和checkbox控件,并更新hashtable

dim qty as textbox

dim del as checkbox

dim i as integer

for i = 0 to dgcar.items.count -1

qty = dgcar.items(i).findcontrol("qty")

del = dgcar.items(i).findcontrol("del")

if (cint(qty.text)> 0) and (not del.checked) then

hash(dgcar.datakeys(i))=cint(qty.text)

else

hash.remove(dgcar.datakeys(i))

end if

next

display()

end sub

</script>

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ems图片格式转换(java)程序
·使用hashtable实现的购物车-ASP教程,ASP应用
·Java中数据库事务处理的实现-JSP教程,Java技巧及代码
·Oracle数据库操作类(c#)-.NET教程,C#语言
·移动短消息技术演进与业务发展浅析
·ASP生成静态网页,学习CASE的用法,以及“权限”的一种控制方法-ASP教程,组件开发
·中国电信发展移动通信的制式与频段选择
·ASP中access数据库的路径问题-ASP教程,数据库相关
·td-scdma系统移动台接入过程浅析
·JAVA与数据库连接方法(三)-JSP教程,数据库相关
最新文章
·fireworks表现vista毛玻璃朦胧效果_fireworks教程
·google adsense哪些情况会被k号_网赚技巧
·减少google adsense展示单元并不能提高收入_网赚技巧
·google adsense“允许域名”新功能很有用_网赚技巧
·于源:办南京人“淘宝”的大三学生_站长访谈
·谈谈网站策划和网站运营方面的点滴经验_站长心得
·美国网站兵败中国的10大思路性执行错误_站长心得
·付款流程中的电话确认_google推广
·google adsense的部分规则的背面_google推广
·googleadsense富翁排行榜最猛每月赚30万美元_google推广
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭