<%@ ページ言語="c#" Codebehind="shoppingcart.aspx.cs" AutoEventWireup="false" Inherits="myshop.shoppingcart" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional// JP" ><HTML> <HEAD>
<タイトル>ショッピングカート
</タイトル>
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312"> <LINK href="mycss.css" type="text/css" rel="stylesheet">
<メタ名="vs_defaultClientScript" コンテンツ="JavaScript">
<meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 "> </HEAD>
<本体> <中央>
<form id="Form1" runat="server"> <table width="500" border="0" cellpacing="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"> <列>
<asp:TemplateColumn HeaderText="删除">
<ItemTemplate> <中央>
<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="数量">
<アイテムテンプレート>
<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" cellpacing="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 ();
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> </テーブル>
</form> </center>
</body></HTML>========================================= ============================================= 以上はHTML页面部分
================================================= =======================================
システムを使用する;
System.Collections を使用します。
System.ComponentModel を使用します。
System.Web.SessionState を使用します。
System.Web を使用します。
System.Web.UI を使用します。
System.Web.UI.HtmlControls を使用します。
System.Web.UI.WebControls を使用します。
System.Data を使用します。
System.Data.OleDb を使用します。
System.Configuration を使用します。
名前空間 myshop
{
/// <概要> /// ショッピングカートの摘要说明。 /// </summary> パブリック クラス ショッピングカート : System.Web.UI.Page
{
保護された System.Web.UI.WebControls.DataGrid ShoppingCartDlt;
保護された System.Web.UI.WebControls.Button 更新;
protected System.Web.UI.WebControls.Button CheckOut;
protected System.Web.UI.HtmlControls.HtmlForm Form1;
protected System.Web.UI.WebControls.Label ラベル;
protected System.Web.UI.WebControls.CheckBox chkProductID;
protected System.Web.UI.WebControls.TextBox txtCount;
protected System.Web.UI.WebControls.TextBox CountTb;
文字列AddProID;
private void Page_Load( オブジェクト送信者, System.EventArgs e )
{
試す
{
if ( セッション["ログオン"]!="はい" セッション["ユーザー名"]==null )
{
Response.Redirect( "error.htm" ) ;
}
}
キャッチ
{
Response.Redirect( "error.htm" ) ;
}
/////////////查看用户否已经登陆。
if( !IsPostBack )
{
if( Request.Params["mode"]=="view" ) //检测否か直接查看购物车。
{
ViewShoppingCart( );
計算機( );
}
if( Request.Params["製品ID"]!=null Request.Params["製品ID"]!="" )
{
AddProID=リクエスト["製品ID"];
UpdateShoppingCart( );
計算機( );
}
}
// ここに放置用户代コードによる初期化页面
}
public void CreateCartTable( ) //创建购物车
{
DataSet ds = 新しい DataSet( );
DataTable newDT=new DataTable( "CartTable" );
ds.Tables.Add( newDT );
データ列 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 );
セッション["myCartTable"]=newDT;
ShoppingCartDlt.DataSource=ds.Tables["CartTable"].DefaultView;
ShoppingCartDlt.DataBind();
}
public void UpdateShoppingCart()
{
if( Session["myCartTable"]==null )//Session["myCartTable"]==null
{
CreateCartTable( );
//用関数数CreateCartTable( )新しいDataTable WriteShoppingCart( );
}
それ以外
{
// 購入品に商品が存在する場合は、購入品情報表DataTableを更新し、それをShoppingCartDltに設定する必要があります WriteShoppingCart();
}
}
public void ViewShoppingCart( ) //查看购物车
{
if( セッション["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;
}
それ以外
{
i++;
}
}
if( ハゾン )
{
//その商品が既に存在する場合、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( ) );
}
それ以外
{
//この商品がない場合、表中に新しい追加の行。データ行 newDR;
ダブルユニットp;
文字列 strcon = "プロバイダ = Microsoft.jet.OLEDB.4.0;
data Source="+Server.MapPath( ConfigurationSettings.AppSettings["MDBpath2"] )+";
";
OleDbConnection myConnection = 新しい OleDbConnection( strcon );
string strSQL= "select * from pro where product_id="+AddProID+"";
OleDbDataAdapter myCommand = new OleDbDataAdapter( strSQL, myConnection );
DataSet ds = 新しい DataSet( );
myCommand.Fill( ds, "AddP" );
newDR=nowTable.NewRow( );
newDR[0]=追加ProID;
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]=ユニットp;
//第一次读库、従つて永久評価と単价は同じです。 //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;
TotalPri を 2 倍にします。
合計プリ = 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 = 新しい 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" );
//コントロール[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="Is削除>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;
計算機( );
}
#region Web ボディデザイナーが生成した代コードのオーバーライド protected void OnInit( EventArgs e )
{
// // CODEGEN: これは、asp.NET Web ボディデザイナーに必要です。 // InitializeComponent( );
Base.OnInit( e );
}
/// <概要> /// 设计器サポートに必要な方法 - 不要な使用代码编辑器修正 /// この方法の内容。 /// </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 );
}
#エンドリージョン
private void update_Click( オブジェクト送信者, System.EventArgs e )
{
アップデート( );
}
private void CheckOut_Click( オブジェクト送信者, System.EventArgs e )
{
アップデート( );
Response.Redirect( "checkout.aspx" );
}
}
http://www.cnblogs.com/boundless/archive/2007/01/16/621553.html