您的位置:首页 > 编程语言 > ASP

购物清单页面的处理shoppingCart.aspx and shoppingCart.aspx.cs

2007-07-31 19:34 489 查看
请输入大于10个字符的资源描述


<%@ Register TagPrefix="uc1" TagName="Footer" Src="UserControls/Footer.ascx" %>


<%@ Register TagPrefix="uc1" TagName="Header" Src="UserControls/Header.ascx" %>


<%@ Page language="c#" Inherits="ASPNETSZ4.ShoppingCart" CodeFile="ShoppingCart.aspx.cs" %>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >


<HTML>


<HEAD>


<title>


<% = pub.sTitle %>


</title>


<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">


<meta name="CODE_LANGUAGE" Content="C#">


<meta name="vs_defaultClientScript" content="JavaScript">


<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">


<LINK href="Style.css" type="text/css" rel="stylesheet">


</HEAD>


<body>


<form id="Form1" method="post" runat="server">


<uc1:header id="Header1" runat="server"></uc1:header>


<TABLE cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">


<TR>


<TD>


<TABLE cellSpacing="0" cellPadding="0" width="100%" border="0">


<TR>


<TD vAlign="top" width="200"></TD>


<td width="2"></td>


<TD vAlign="top" align="middle">


<table cellSpacing="0" cellPadding="0" width="98%">


<tr>


<td background="Images/BannerBGOrange.gif" height="26">  购物清单列表</td>


<td background="Images/BannerBGOrange.gif" align="right"><asp:label id="lbMsg" runat="server" ForeColor="Red"></asp:label></td>


</tr>


</table>


<asp:Panel id="Panel1" runat="server">


<asp:datagrid id="DataGrid1" runat="server" DataKeyField="ProductID" AutoGenerateColumns="False" Width="98%" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4">


<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>


<AlternatingItemStyle BackColor="Cornsilk"></AlternatingItemStyle>


<ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>


<HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>


<FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>


<Columns>


<asp:TemplateColumn Visible="False" HeaderText="货号">


<ItemTemplate>


<asp:Label id=lbProductID runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ProductID") %>' Visible="false">


</asp:Label>


</ItemTemplate>


</asp:TemplateColumn>


<asp:BoundColumn DataField="ModelNumber" HeaderText="规格型号"></asp:BoundColumn>


<asp:BoundColumn DataField="ModelName" HeaderText="商品名称"></asp:BoundColumn>


<asp:TemplateColumn HeaderText="数量">


<ItemTemplate>


<asp:TextBox id=txtQuantity runat="server" BorderStyle="Dotted" BorderWidth="1px" Text='<%# DataBinder.Eval(Container.DataItem, "Quantity") %>' ToolTip="双击后直接修改数量" Columns="4" MaxLength="3" width="100%">


</asp:TextBox>


</ItemTemplate>


</asp:TemplateColumn>


<asp:BoundColumn DataField="UnitCost" HeaderText="单价" DataFormatString="{0:c}">


<ItemStyle HorizontalAlign="Right"></ItemStyle>


</asp:BoundColumn>


<asp:BoundColumn DataField="ExtendedAmount" HeaderText="小计" DataFormatString="{0:c}">


<ItemStyle HorizontalAlign="Right"></ItemStyle>


</asp:BoundColumn>


<asp:TemplateColumn HeaderText="删">


<ItemTemplate>


<DIV align="center">


<asp:CheckBox id="cbRemove" runat="server"></asp:CheckBox></DIV>


</ItemTemplate>


</asp:TemplateColumn>


</Columns>


<PagerStyle HorizontalAlign="Center" ForeColor="#330099" BackColor="#FFFFCC"></PagerStyle>


</asp:datagrid>


<TABLE cellSpacing="0" cellPadding="0" width="98%">


<TR>


<TD align="middle" background="Images/BannerBGOrange.gif" height="26">


<asp:Button id="Button1" runat="server" BorderStyle="None" BorderWidth="1px" BackColor="Transparent" Text="√全部选中" onclick="Button1_Click"></asp:Button></TD>


<TD align="middle" background="Images/BannerBGOrange.gif" height="26">


<asp:Button id="Button2" runat="server" BorderStyle="None" BorderWidth="1px" BackColor="Transparent" Text="□全部取消" onclick="Button2_Click"></asp:Button></TD>


<TD align="right" background="Images/BannerBGOrange.gif" height="26">合计金额:


</TD>


<TD align="right" background="Images/BannerBGOrange.gif" height="26">


<asp:label id="lbTotal" runat="server" EnableViewState="false"></asp:label></TD>


</TR>


</TABLE>


<BR>


<TABLE cellSpacing="0" cellPadding="0" align="center" border="0">


<TR>


<TD align="middle">


<asp:ImageButton id="ImageButton1" runat="server" ImageUrl="Images/UpdateCart.gif"></asp:ImageButton></TD>


<TD align="middle" width="10"></TD>


<TD align="middle">


<asp:ImageButton id="ImageButton2" runat="server" ImageUrl="Images/CheckOut.gif"></asp:ImageButton></TD>


</TR>


</TABLE>


</asp:Panel>


</TD>


</TR>


</TABLE>


</TD>


</TR>


</TABLE>


<uc1:footer id="Footer1" runat="server"></uc1:footer>


</form>


</body>


</HTML>


using System;


using System.Collections;


using System.ComponentModel;


using System.Data;


using System.Drawing;


using System.Web;


using System.Web.SessionState;


using System.Web.UI;


using System.Web.UI.WebControls;


using System.Web.UI.HtmlControls;




namespace ASPNETSZ4




...{




/**//// <summary>


/// Summary description for ShoppingCart.


/// </summary>


public partial class ShoppingCart : System.Web.UI.Page




...{


protected Pub pub = new Pub();




protected void Page_Load(object sender, System.EventArgs e)




...{




//put user code to initialize the page here


if (Page.IsPostBack == false)




...{


BindData();


}


}




/**//// <summary>


/// bind data


/// </summary>


void BindData()




...{


String CartID = pub.GetShoppingCartID();


DataGrid1.DataSource = pub.spShoppingCartList(CartID);


DataGrid1.DataBind();


DispInfo();


}




/**//// <summary>


/// display info about shopping cartId


/// </summary>


void DispInfo()




...{


//当前用户的购物车ID


String CartID = pub.GetShoppingCartID();


//lsMsg 用来显示购物车的信息


if (DataGrid1.Items.Count == 0)




...{


lbMsg.Text = pub.SiteName + " -- 购物清单 -- 暂时为空 -- 请继续购物 ";


Panel1.Visible = false;


}


else




...{


lbMsg.Text = pub.SiteName + " -- 购物清单 -- 共有 " + DataGrid1.Items.Count.ToString() + " 个记录 -- 请继续购物 ";


Panel1.Visible = true;


//<asp:BoundColumn DataField="ExtendedAmount" HeaderText="小计" DataFormatString="{0:c}">


lbTotal.Text = String.Format( "{0:c}", pub.spShoppingCartTotal(CartID));


}


}




/**//// <summary>


/// update shoppingCart data


/// </summary>


void ShoppingCartUpdate()




...{


String CartID = pub.GetShoppingCartID();


// 遍历 DataGird1 里的 txtQuantity 与 cbRemove 值


for (int i=0; i<DataGrid1.Items.Count; i++)




...{


// 获取相关值


//CheckBoxList.FindControl 在当前的命名容器中搜索指定的服务器控件。


TextBox TxtQuantity = (TextBox) DataGrid1.Items[i].FindControl("txtQuantity");


CheckBox cbRemove = (CheckBox) DataGrid1.Items[i].FindControl("cbRemove");


int iQty;


// 保护异常


try




...{


iQty = Int32.Parse(TxtQuantity.Text);


// 如果数量改变或者选中


if (iQty != (int)DataGrid1.DataKeys[i] || cbRemove.Checked == true)




...{


Label lbProductID = (Label) DataGrid1.Items[i].FindControl("lbProductID");


if (iQty == 0 || cbRemove.Checked == true)




...{


pub.spShoppingCartRemoveItem(CartID, Int32.Parse(lbProductID.Text));


}


else




...{


pub.spShoppingCartUpdateQty(CartID, Int32.Parse(lbProductID.Text), iQty);


}


}


}


catch




...{


lbMsg.Text = "系统提示: 您刚才至少有一处有输入错误.";


}


}


}








Web Form Designer generated code#region Web Form Designer generated code


override protected void OnInit(EventArgs e)




...{


//


// CODEGEN: This call is required by the ASP.NET Web Form Designer.


//


InitializeComponent();


base.OnInit(e);


}






/**//// <summary>


/// Required method for Designer support - do not modify


/// the contents of this method with the code editor.


/// </summary>


private void InitializeComponent()




...{


this.ImageButton1.Click += new System.Web.UI.ImageClickEventHandler(this.ImageButton1_Click);


this.ImageButton2.Click += new System.Web.UI.ImageClickEventHandler(this.ImageButton2_Click);




}


#endregion




/**//// <summary>


/// update shopping Cart count


/// </summary>


/// <param name="sender"></param>


/// <param name="e"></param>




private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)




...{


ShoppingCartUpdate();


BindData();


}




/**//// <summary>


/// pay out money to shopping cart


/// </summary>


/// <param name="sender"></param>


/// <param name="e"></param>


private void ImageButton2_Click(object sender, System.Web.UI.ImageClickEventArgs e)




...{


ShoppingCartUpdate();


if (DataGrid1.Items.Count > 0)


// 付款结帐前, 再次检查是否非空购物车, 然后并没作过多的处理, 而是直接转向订单确认页面


Response.Redirect("Checkout.aspx");


else


lbMsg.Text = "系统提示: 您当前的购物清单是空的, 所以, 您还无需进行结帐付款.";


}




/**//// <summary>


/// 购买 的商品全部选中然后计算总价值


/// </summary>


/// <param name="sender"></param>


/// <param name="e"></param>


protected void Button1_Click(object sender, System.EventArgs e)




...{


for(int i=0; i<DataGrid1.Items.Count; i++)




...{


((CheckBox)DataGrid1.Items[i].Cells[0].FindControl("cbRemove")).Checked = true;


}


DispInfo();


}




/**//// <summary>


/// 购买 的商品全部取消,然后检验购物车的总价数


/// </summary>


/// <param name="sender"></param>


/// <param name="e"></param>


protected void Button2_Click(object sender, System.EventArgs e)




...{


for(int i=0; i<DataGrid1.Items.Count; i++)




...{


((CheckBox)DataGrid1.Items[i].Cells[0].FindControl("cbRemove")).Checked = false;


}


DispInfo();


}


}


}



此购物清单的设计要点:

1.页面的加载为Page.isPostBack

2.DataBind method

3.购物车信息的显示函数

要注意这种写法:

if (DataGrid1.Items.Count == 0)
{
lbMsg.Text = pub.SiteName + " -- 购物清单 -- 暂时为空 -- 请继续购物 ";
Panel1.Visible = false;
}
else
{
lbMsg.Text = pub.SiteName + " -- 购物清单 -- 共有 " + DataGrid1.Items.Count.ToString() + " 个记录 -- 请继续购物 ";
Panel1.Visible = true;
//<asp:BoundColumn DataField="ExtendedAmount" HeaderText="小计" DataFormatString="{0:c}">
lbTotal.Text = String.Format( "{0:c}", pub.spShoppingCartTotal(CartID));
}

4.更新购物车的数据。

//CheckBoxList.FindControl 在当前的命名容器中搜索指定的服务器控件。
TextBox TxtQuantity = (TextBox) DataGrid1.Items[i].FindControl("txtQuantity");
CheckBox cbRemove = (CheckBox) DataGrid1.Items[i].FindControl("cbRemove");

5.更新购物车中商品的数量和总钱数,此处是用二个Image button 来实现的。具体参照上面的代码

6.对选中商品和清空商品的处理

就是二个BUTTON的事件程序

雅琦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐