程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> asp.net 實現購物車詳細代碼

asp.net 實現購物車詳細代碼

編輯:.NET實例教程


<%@ 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; 
protec
ted 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" ); 
nowTa
ble2.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" ); 


}

http://www.cnblogs.com/boundless/archive/2007/01/16/621553.Html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved