購物清單頁面的處理shoppingCart.aspx and shoppingCart.aspx.cs

請輸入大於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">&nbsp;&nbsp;購物清單列表</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
        
/// <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的事件程序

雅琦

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章