asp.net 实现购物车详细代码【转】

ASP.NET购物车(源码下载) 说明:该实例基于ASP.NET3.5使用Session实现购物车功能,商品的分类以及产品的管理功能不在此实现。         希望该实例能对对购物车功能实现不太清楚的开发人员起到抛砖引玉的功效:)。1、惯例——预览功能产品列表:购物车:2、Products表设计3、Product表模拟数据3、数据访问类SqlHelper.cs类图:代码:using System; using System.Data; using System.Data.SqlClient; namespace DAO { 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<%@ Page language="c#" Codebehind="shoppingcart.aspx.cs" AutoEventWireup="false" Inherits="myshop.shoppingcart" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML> <HEAD>
<title>shoppingcart
</title>
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312"> <LINK href="mycss.css" type="text/css" rel="stylesheet">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD>
<body> <center>
<form id="Form1" runat="server"> <table width="500" border="0" cellspacing="0" cellpadding="0"> <tr> <td>
<asp:DataGrid id="ShoppingCartDlt" runat="server" Width="500" BackColor="white" BorderColor="black" ShowFooter="false" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#cecfd6" AutoGenerateColumns="false" MaintainState="true"> <Columns>
<asp:TemplateColumn HeaderText="删除">
<ItemTemplate> <center>
<asp:CheckBox id="chkProductID" runat="server" /> </center>
</ItemTemplate> </asp:TemplateColumn>
<asp:BoundColumn DataField="ProdID" HeaderText="ID" />
<asp:BoundColumn DataField="ProName" HeaderText="商品名称" />
<asp:BoundColumn DataField="UnitPrice" HeaderText="单价" />
<asp:TemplateColumn HeaderText="数量">
<ItemTemplate>
<asp:TextBox id="CountTb" runat="server" Text='<%#DataBinder.Eval( Container.DataItem,"ProdCount" )%>'> </asp:TextBox>
</ItemTemplate> </asp:TemplateColumn>
<asp:BoundColumn DataField="TotalPrice" HeaderText="小计( 元 )" /> </Columns> </asp:DataGrid></td> </tr> </table> <br> <table width="500" border="0" cellspacing="0" cellpadding="0"> <tr> <td>
<asp:Button id="update" runat="server" Text="更新我的购物车" CssClass="button2" /></td> <td>
<asp:Button id="CheckOut" runat="server" Text="结算" CssClass="button5" />
<input type="button" name="close2" value="继续购物" onClick="window.close( );
return false;
" class="button2"></td> <td align="right"><br>
<asp:Label id="label" runat="server" Width="100px" Visible="True" ForeColor="#FF8080" Height="18px"></asp:Label></td> </tr> </table>
</form> </center>
</body></HTML>=======================================================================================以上为HTML页面部分==========================================================================================
using System;
using System.Collections;
using System.ComponentModel;
using System.Web.SessionState;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
namespace myshop
{
/// <summary> /// shoppingcart 的摘要说明. /// </summary> public class shoppingcart : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid ShoppingCartDlt;
protected System.Web.UI.WebControls.Button update;
protected System.Web.UI.WebControls.Button CheckOut;
protected System.Web.UI.HtmlControls.HtmlForm Form1;
protected System.Web.UI.WebControls.Label label;
protected System.Web.UI.WebControls.CheckBox chkProductID;
protected System.Web.UI.WebControls.TextBox txtCount;
protected System.Web.UI.WebControls.TextBox CountTb;
string AddProID;
private void Page_Load( object sender, System.EventArgs e )
{
try
{
if ( Session["logon"]!="yes"||Session["username"]==null )
{
Response.Redirect( "error.htm" ) ;
}
}
catch
{
Response.Redirect( "error.htm" ) ;
}
/////////////查看用户是否已经登陆.
if( !IsPostBack )
{
if( Request.Params["mode"]=="view" ) //检测是否为直接查看购物车.
{
ViewShoppingCart( );
Caculator( );
}
if( Request.Params["productID"]!=null||Request.Params["productID"]!="" )
{
AddProID=Request["productID"];
UpdateShoppingCart( );
Caculator( );
}
}
// 在此处放置用户代码以初始化页面
}
public void CreateCartTable( ) //创建购物车
{
DataSet ds = new DataSet( );
DataTable newDT=new DataTable( "CartTable" );
ds.Tables.Add( newDT );
DataColumn newDC;
newDC=new DataColumn( "ProdID",System.Type.GetType( "System.Int32" ) );
ds.Tables["CartTable"].Columns.Add( newDC );
newDC=new DataColumn( "ProdCount",System.Type.GetType( "System.Int32" ) );
newDC.DefaultValue=1;
ds.Tables["CartTable"].Columns.Add( newDC );
newDC=new DataColumn( "ProName",System.Type.GetType( "System.String" ) );
ds.Tables["CartTable"].Columns.Add( newDC );
newDC=new DataColumn( "UnitPrice",System.Type.GetType( "System.Double" ) );
ds.Tables["CartTable"].Columns.Add( newDC );
newDC=new DataColumn( "TotalPrice",System.Type.GetType( "System.Double" ) );
ds.Tables["CartTable"].Columns.Add( newDC );
newDC=new DataColumn( "IsDeleted",System.Type.GetType( "System.Int32" ) );
newDC.DefaultValue=0;
// public void WriteShoppingCart( ) 中 newDR[5]="0";
行,已被注销, ds.Tables["CartTable"].Columns.Add( newDC );
Session["myCartTable"]=newDT;
ShoppingCartDlt.DataSource=ds.Tables["CartTable"].DefaultView;
ShoppingCartDlt.DataBind( );
}
public void UpdateShoppingCart( )
{
if( Session["myCartTable"]==null )//Session["myCartTable"]==null
{
CreateCartTable( );
//调用函数CreateCartTable( )新建一个DataTable WriteShoppingCart( );
}
else
{
//如果购物蓝中已有商品,则需要对购物信息表DataTable进行更新,并将其棒定到ShoppingCartDlt WriteShoppingCart( );
}
}
public void ViewShoppingCart( ) //查看购物车
{
if( Session["myCartTable"]!=null )
{
DataTable viewTable=new DataTable( "nowCartTable" );
viewTable=( DataTable )Session["myCartTable"];
ShoppingCartDlt.DataSource = viewTable.DefaultView;
//购物车棒定到ShoppingCartDlt ShoppingCartDlt.DataBind( );
}
}
public void WriteShoppingCart( )
{
if( Request.Params["mode"]!="view" ) //检查是否是直接查看购物车,如果直接查看,就不再写MYCARTTABLE
{
DataTable nowTable=new DataTable( "nowCartTable" );
nowTable=( DataTable )Session["myCartTable"];
int pn=nowTable.Rows.Count;
int i=0;
bool hasone=false;
int nowProdID;
while( i<pn && !hasone )
{
nowProdID=Int32.Parse( nowTable.Rows[i][0].ToString( ) );
if( nowProdID==Int32.Parse( AddProID ) ) //判断购物信息表中,是否存有当前放入商品. if( nowProdID==Int32.Parse( AddProID ) )
{
hasone=true;
}
else
{
i++;
}
}
if( hasone )
{
//如果已有该商品,则 hasone=true,更改该数据行 DataRow oldDR;
oldDR=nowTable.Rows[i];
oldDR["ProdCount"]=Int32.Parse( oldDR["ProdCount"].ToString( ) )+1;
oldDR["TotalPrice"]=Int32.Parse( oldDR["ProdCount"].ToString( ) )*Double.Parse( oldDR["UnitPrice"].ToString( ) );
}
else
{
//如果没有该商品,在表中新加如一行. DataRow newDR;
double unitp;
String strcon="provider=Microsoft.jet.OLEDB.4.0;
data Source="+Server.MapPath( ConfigurationSettings.AppSettings["MDBpath2"] )+";
";
OleDbConnection myConnection = new OleDbConnection( strcon );
string strSQL= "select * from pro where product_id="+AddProID+"";
OleDbDataAdapter myCommand = new OleDbDataAdapter( strSQL, myConnection );
DataSet ds = new DataSet( );
myCommand.Fill( ds, "AddP" );
newDR=nowTable.NewRow( );
newDR[0]=AddProID;
newDR[2]=ds.Tables["Addp"].Rows[0]["product_name"].ToString( );
unitp=Double.Parse( ds.Tables["AddP"].Rows[0]["product_memprice"].ToString( ) );
//会员价 newDR[3]=unitp;
newDR[4]=unitp;
//第一次读库,所以总价格和单价是一样的. //newDR[5]="0";
nowTable.Rows.Add( newDR );
myConnection.Close( );
}
ShoppingCartDlt.DataSource = nowTable.DefaultView;
//将更新后的 DataTable棒定到ShoppingCartDlt ShoppingCartDlt.DataBind( );
Session["myCartTable"] = nowTable;
//重新保存更新过的DataTable
}
}
public void Caculator( )
{
if( Session["myCartTable"]!=null ) //购物车是否为空
{
int h;
Double TotalPri;
TotalPri=0;
DataTable nowTable3=new DataTable( "nowCartTable3" );
nowTable3=( DataTable )Session["myCartTable"];
if( nowTable3.Rows.Count>0 ) //返回购物车中是否有货物
{
for( h=0;
h<=nowTable3.Rows.Count-1;
h++ )
{
TotalPri=TotalPri+Int32.Parse( nowTable3.Rows[h][4].ToString( ) );
//Double.Parse( ( string )TotalText.Text );
}
label.Text="总计: "+TotalPri.ToString( )+" 元" ;
}
}
}
public void Update( )
{
int i;
int j;
int k;
ArrayList deleteItem = new ArrayList( 10 );
DataGridItem _item ;
j=0;
int deleteid;
k=0;
DataTable nowTable2=new DataTable( "nowCartTable2" );
nowTable2=( DataTable )Session["myCartTable"];
for( i=0;
i<=this.ShoppingCartDlt.Items.Count-1;
i++ )
{
_item = this.ShoppingCartDlt.Items[i];
TextBox CountText=( TextBox )this.ShoppingCartDlt.Items[i].Cells[4].FindControl( "CountTb" );
//Controls[1];
//_item.FindControl( "CountTb" );
CheckBox ProductIDCheck =( CheckBox ) _item.FindControl( "chkProductID" );
nowTable2.Rows[i][1] = Int32.Parse( CountText.Text.ToString( ) );
nowTable2.Rows[i][4] = Int32.Parse( nowTable2.Rows[i][1].ToString( ) ) * Double.Parse( nowTable2.Rows[i][3].ToString( ) );
if( ProductIDCheck.Checked )
{
nowTable2.Rows[i][5] = 1;
//添加删除标记1 j=j+1;
}
}
string strExpr="IsDeleted>0";
//http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemDataDataTableClassSelectTopic.asp DataRow[] foundRows = nowTable2.Select( strExpr );
for( int m = 0;
m < foundRows.Length;
m ++ )
{
//Console.WriteLine( foundRows[i][0] );
foundRows[m].Delete( );
}
ShoppingCartDlt.DataSource = nowTable2.DefaultView;
ShoppingCartDlt.DataBind( );
Session["myCartTable"] = nowTable2;
Caculator( );
}
#region Web 窗体设计器生成的代码 override protected void OnInit( EventArgs e )
{
// // CODEGEN: 该调用是 asp.NET Web 窗体设计器所必需的. // InitializeComponent( );
base.OnInit( e );
}
/// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容. /// </summary> private void InitializeComponent( )
{
this.update.Click += new System.EventHandler( this.update_Click );
this.CheckOut.Click += new System.EventHandler( this.CheckOut_Click );
this.Load += new System.EventHandler( this.Page_Load );
}
#endregion
private void update_Click( object sender, System.EventArgs e )
{
Update( );
}
private void CheckOut_Click( object sender, System.EventArgs e )
{
Update( );
Response.Redirect( "checkout.aspx" );
}
}
}
基于asp.net的网上书店设计 获取项目源文件,学习交流联系Q:1415736481,可指导毕设,课设 前言 随着中国加入WTO,全球经济一体化的逐步深入,网上书店已是现代传统书店必不可少的经营策略。目前,网上书店在国际互联网上可以实现的商务功能已经多样化,可以说从最基本的对外沟通展示功能、信息发布功能,在线图书展示功能、在线洽谈功能、在线交易功能、在线采购功能、在线客户服务功能、在线网站管理功能等等,几乎以往传统书店功能都... 阅读详情

相关推荐

ASP.NET购物车的实现及结算处理源代码

 ASP.NET购物车的实现及结算处理源代码作者:Mr.zhao 本示例利用Session对象来实现一个简单的购物车。主要用于教学演示。 Book类此类主是代表购物车的一本书using System;namespace CartTest{ ///  /// Books 的摘要说明。 ///  public class Book {  string bookid;  string tit

.Net学习园地 6066

Asp.net常用的51个代码(值得收藏)

1.弹出对话框.点击转向指定页面 Code: Response.Write("<script>window.alert('该会员没有提交申请,请重新提交!')</script>"); Response.Write("<script>window.location ='http://www.msproject.cn/index.asp'</script>"); 2.弹出对话框 Code: Response.Write("<script lan

Alex 的程序园地 1375

一个完整的ASP.NET购物车代码

 using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.W

ASP.NET专区 7647

简单购物车(增加数量和减少数量)

xmlns="http://www.w3.org/1999/xhtml"> http-equiv="Content-Type" content="text/html; charset=utf-8" /> 购物车 function add(addObj){ //获取当前节点

zj3311815的专栏 3516

asp.net 实现购物车

    shoppingcart        http://schemas.microsoft.com/intellisense/ie5">                                      ShowFooter="false" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" Head

bmiracle的专栏 2559

在ASP.NET MVC实现购物车,尝试一种不同于平常的购物车显示方式

通常,我们看到的购物车是这样的:     虽然这种购物车显示方式被广泛运用,但我个人觉得不够直观。如果换成这样呢?     本篇的源码放在了:https://github.com/darrenji/ShoppingCartInMVC   以上购物车页能实现的效果包括:1、购物车明细:显示订购数量、总金额,清空购物车。2、购物车内产品:数量可调整,对应的小计和总计动态变化。点击移除按钮移除该产品...

weixin_34163741的博客 1916

.Net平台开发的技术规范与实践精华总结

.Net平台开发的技术规范与实践精华总结以下是本人对.Net平台开发实践的一些点滴总结。这里的技术规范主要是开发过程的代码规范、数据库设计规范、Com和.Net互操作规范;实践精华是对技术实践过程中的部分总结。一、代码规范良好的代码风格来自于同一的代码规范。风格良好的代码不仅具备可读性和可维护性,同时也给人行云流水、赏心悦目之快感。据Microsoft公司统计,基于微软平台的开发中

一幅凝固的油画 2万+

kettle写doris操作

文件在目录:doris-master\extension\kettle\assemblies\plugin\target\doris-stream-loader-plugins-9.4.0.0-343.zip。官方提供了doris stream load插件,下载源码编译后放到kettle的插件目录即可使用。地址:https://github.com/apache/doris.git。注意:需要doris插件或者kettle转换生成模板的私聊博主。使用PDmaner同步业务库生成建表语句。

weixin_44449054的博客 3029

分享129个ASP.NET源码总有一个是你想要的

分享129个ASP.NET源码总有一个是你想要的

zy0412326的专栏 2061

从IR Drop到EM分析:数字IC电源规划中那些没人明说的细节(以MTCMOS配置为例)

本文深入探讨数字IC后端设计中电源规划的关键细节,特别关注MTCMOS配置、电源网络电阻最小化和level shifter供电等实战技巧。通过分析IR Drop和EM问题,提供优化floorplan和powerplan的具体策略,帮助工程师避免常见陷阱,提升芯片设计的稳定性和可靠性。

q9w8e7r6t5的博客 511

ASP.NET程序中常用的三十三种代码[低]

asp.net程序中最常用的三十三种编程代码,为初学者多多积累经验,为高手们归纳总结,看了觉得很有价值~,大家不妨参考下!           1.   打开新的窗口并传送参数:               传送参数:           response.write("<script>window.open(’*.aspx?id="+this.DropDownList1....

weixin_33849942的博客 195

从零到一:使用阿里云百炼搭建企业级 AI Agent 完全实战手册(2026超详细版)

本文是一份企业级AI Agent构建手册,主要面向企业技术负责人、AI产品经理和后端开发工程师。手册详细介绍了如何在阿里云百炼平台上搭建企业智能体应用的全流程,包括环境准备、知识库构建、智能体创建、工具集成、工作流编排等核心环节。重点内容包括: 准备工作:阿里云账号注册、百炼服务开通、免费额度领取、API Key管理 知识库构建:文档格式要求、内容优化原则、RAG系统搭建 智能体开发:Agent创建、工具集成、复杂业务工作流设计 生产部署:多渠道接入、监控运维、安全治理 成本控制:Token预算管理、选型决

u010323587的专栏 1078

asp.net实现一个简易购物车功能。

要求: 使用Session记录放入购物车的商品; 分别有两个页面:一是购物页面;二是购物车页面; 购物页面包含商品列表(CheckBoxList)和两个按钮; 购物车页面包含想购买的商品列表和两个按钮; 在购物车页面,当按下“放入购物车”按钮,用Session记录商品名称,商品名称之间使用“逗号”隔开; 在购物车页面,根据Session取出商品,利用逗号分割出所有商品,放入购买列表中; 结果: 关键代码: Default.aspx: <form id="form1" runat="server

airkong的博客 8749

抖音a_bogus参数逆向避坑指南:从环境检测到XHR请求的全流程解析

本文详细解析了抖音a_bogus参数在v1.0.1.19版本下的逆向工程全流程,重点介绍了如何通过PyV8Env框架进行有效的补环境操作,以绕过严格的环境检测。内容涵盖从环境初始化、关键事件触发到模拟XHR请求获取签名的完整步骤,并提供了可运行的Python代码示例和常见检测点的避坑指南,帮助开发者稳定生成有效的a_bogus参数。

tech5的博客 600

先进封装基础知识

想象一下,芯片就像是电脑或手机的大脑,但它非常脆弱,需要被保护起来。芯片封装就是给芯片穿上一件“保护衣”,这件“保护衣”不仅可以保护芯片,还能帮助芯片与外部世界进行沟通。

阿拉伯梳子的专栏 1143

asp.net 实现购物车详细代码

      shoppingcart  charset=gb2312">      http://schemas.microsoft.com/intellisense/ie5">                                                                

冷枫@优快云 1万+

一篇文章认识《双目立体视觉》

双目立体视觉,由两个摄像头组成,像人的眼睛能看到三维的物体,具有深度的信息;单目视觉只能看到二维的物体。 1)双目摄像头 2)双目相机基线 3)打开双目摄像头 4)双目测距 视差disparity、 极线约束、 极线校正/立体校正、 a.双目标定 b.双目矫正 c.立体匹配 d.双目测距(三角测量) e.测距效果 立体视觉方法评测网站

黎国溥 7958

asp.net使用Cookies实现购物车

asp.net使用Cookies实现购物车 http://www.cnblogs.com/duwx/archive/2010/08/30/1812415.html   ListInfo.aspx向购物车的添加商品的方法 private void GouWu(string name, double price, string id)     {         //往购物车中添加商品

我的地盘 1788

SAP CRP能力计划详细说明操作及相关配置

2、求助朋友同事的希望破灭后,网上找了资料发现在百度搜索的资料基本都是没有说明白什么才产能计划,都没有详细的操作说明,然后用google去搜索了一些相关的文章,好像也没有详细的文章。然后也去SAP的官网搜索了相关的文章,都是文字性的表述,对系统的配置都没有很大的帮助,很久之前有记得在隐身人的博客中有提到CRP的能力计划的文章,然后试着去找了一下相关的文章。5、首先产能排产肯定涉及的就是是能力的问题,能力第一个能想到的就是工作中心中的能力页签,在流程制造中也叫资源,其实都是一个东西。

我小时候很黑的博客 4516

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: ASP多文件上传
下一篇: asp搜索两个以上的词的实现方法
piperzero
博客等级 码龄21年 1377粉丝 504原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值