嘻哈人间,我醉逍遥

while(true){this.StudyDotNet(DotNetLanguage.CSharp);}

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
[ASPX]
<%@ Page Language="C#" MasterPageFile="~/Scripts/ShopCart/ShopCart.master" AutoEventWireup="true"
    CodeFile
="Default.aspx.cs" Inherits="_Default" Title="购物车" 
%>
   
   
<%@ Import Namespace="AW.Components.Helpers" %>  

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    
<asp:MultiView ID="MultiView1" runat="server">
        
<asp:View ID="View1" runat="server">

            
<script language="javascript" type="text/javascript" src='<%= this.ResolveUrl("~/Utility/Functions.js") %>'></script>

            
<script language="javascript" type="text/javascript">
        
var key = '<%= Key %>';
        
function remove(pID){
            
var v = getCookie(key)==null?"":getCookie(key);
            _Default.RemoveProductFromOrder(pID,v,remove_Callback);
        }

        
function remove_Callback(res){
            
if(res.error!=null)alert(res.error);
            
else{
               
var tr = document.getElementById("tr_" + res.value.PID.toString());
               tr.style.display 
= "none";         
               deleteCookie(key,
"/","." + location.host);
               setCookie(key,res.value.NVC,
null,"/","."+location.host);
               calcMoney();
            }

        }

        
function modify(pID,num){
            
var v = getCookie(key)==null?"":getCookie(key);
            _Default.ModifyProductNumber(pID,num,v,modify_Callback);
        }

        
function modify_Callback(res){
            deleteCookie(key,
"/","." + location.host);
            setCookie(key,res.value.NVC,
null,"/","."+location.host);    
            
var total = document.getElementById("txtSubTotal_" + res.value.PID.toString());
            
var price = document.getElementById("txtVipPrice_" + res.value.PID.toString());
            total.value 
= Round(parseFloat(parseInt(res.value.TOTAL) * parseFloat(price.value)),2);
            calcMoney();
        }

        
function modifyAll(){
       
        }

        
function clearCart(){
            
if (!confirm('确定要清空购物车吗?')) return;
            
var tb = document.getElementById("tbOrder");
               
for(var i=1;i<tb.rows.length;i++){
                    
var tr = tb.rows.item(i);
                    
if(tr.id.indexOf("_")!=-1 && tr.style.display!="none"){
                        tr.style.display 
= 'none';
                     }

                }
  
             deleteCookie(key,
"/","." + location.host);
            
var ctlTotalNum = document.getElementById("<%=lbTotalNum.ClientID %>");
            
var ctlTotalMoney = document.getElementById("<%=lbTotalMoney.ClientID %>");
            
var ctlDiscount = document.getElementById("<%=lbDiscount.ClientID %>");     
            ctlTotalNum.innerHTML 
= "0";            
            ctlTotalMoney.innerHTML 
= "0";
            ctlDiscount.innerHTML 
= "0"
        }

        
        
function calcMoney(){
            
var ctlNums = document.getElementsByName("txtNumber");
            
var ctlPrices = document.getElementsByName("txtPrice");
            
var ctlVipPrices = document.getElementsByName("txtVipPrice");
            
var ctlSubTotal = document.getElementsByName("txtSubTotal");
            
var ctlTotalNum = document.getElementById("<%=lbTotalNum.ClientID %>");
            
var ctlTotalMoney = document.getElementById("<%=lbTotalMoney.ClientID %>");
            
var ctlDiscount = document.getElementById("<%=lbDiscount.ClientID %>");     
            
var totalNum = 0;
            
var subTotal = 0;
            
var subTotalVip = 0;
            
var totalMoney = 0;  
            
var totalVipMoney = 0;
            
            
for(var i=0;i<ctlNums.length;i++){
                totalNum 
+= parseInt(ctlNums[i].value);
                subTotal  
= parseFloat(totalNum * parseFloat(ctlPrices[i].value));
                subTotalVip 
=  parseFloat(totalNum * parseFloat(ctlVipPrices[i].value));
                totalMoney 
+=  subTotal;
                totalVipMoney 
+= subTotalVip; 
               ctlSubTotal.value 
= subTotalVip.toString(); 
            }
 
            ctlTotalNum.innerHTML 
= Round(totalNum,2);
            ctlTotalMoney.innerHTML 
= Round(totalVipMoney,2);
            ctlDiscount.innerHTML 
= Round((totalMoney - totalVipMoney),2);
        }

        
function Round(a_Num , a_Bit){
            
return (Math.round(a_Num * Math.pow (10 , a_Bit)) / Math.pow(10 , a_Bit)).toString()  ;
        }
 
        
</script>

            
<div id="shopcart">
                
<table width="778" border="0" align="center" cellpadding="0" cellspacing="0" background="../../Icon/ShopCart/shopC_syp_5.gif">
                    
<tbody>
                        
<tr>
                            
<td width="12">
                                
<img height="72" src="../../Icon/ShopCart/shopC_syp_1.gif" width="12" /></td>
                            
<td>
                                
<img height="72" src="../../Icon/ShopCart/shopC_6.gif" width="176" /></td>
                            
<td valign="bottom" align="right">
                                
<img height="29" src="../../Icon/ShopCart/shopC_4.gif" width="324" /></td>
                            
<td width="10" align="right" valign="bottom">
                                
<img height="72" src="../../Icon/ShopCart/shopC_syp_3.gif" width="10" /></td>
                        
</tr>
                    
</tbody>
                
</table>
                
<table class="meun_bg" cellspacing="0" cellpadding="0" width="540" align="center"
                    border
="0">
                    
<tbody>
                        
<tr>
                            
<td align="right">
                                
<img height="28" src="../../Icon/ShopCart/shopC_syx_01.gif" width="93" border="0" /></td>
                            
<td>
                                
<img height="32" src="../../Icon/ShopCart/shopC_sy_8.gif" width="55" /></td>
                            
<td>
                                
<img height="28" src="../../Icon/ShopCart/shopC_syx_02.gif" width="112" border="0" /></td>
                            
<td>
                                
<img height="32" src="../../Icon/ShopCart/shopC_sy_8.gif" width="55" /></td>
                            
<td>
                                
<img height="22" src="../../Icon/ShopCart/shopC_syx_03.gif" width="109" border="0" /></td>
                        
</tr>
                    
</tbody>
                
</table>
                
<table cellspacing="0" cellpadding="0" width="778" align="center" bgcolor="#fafafa"
                    border
="0">
                    
<tbody>
                        
<tr>
                            
<td>
                                
<img height="41" hspace="8" src="../../Icon/ShopCart/shopc_z1.gif" width="143" /></td>
                        
</tr>
                        
<tr>
                            
<td>
                                
<table cellspacing="0" cellpadding="0" width="96%" align="center" border="0">
                                    
<tbody>
                                        
<tr align="right" bgcolor="#fafafa">
                                            
<td>
                                                
<img height="15" src="../../Icon/ShopCart/shopc_syx_j.gif" width="771" /></td>
                                        
</tr>
                                        
<tr align="right" bgcolor="#fafafa">
                                            
<td class="boder_center_bg">
                                                
<table cellspacing="1" width="95%" align="center" border="0" id="tbOrder">
                                                    
<tbody>
                                                        
<tr class="boder_topbg" align="center">
                                                            
<td>
                                                                商品名称
</td>
                                                            
<td>
                                                                单 位
</td>
                                                            
<td>
                                                                数 量
</td>
                                                            
<td>
                                                                市场价(元)
</td>
                                                            
<td>
                                                                会员价(元)
</td>
                                                            
<td>
                                                                小 计(元)
</td>
                                                            
<td width="8%">
                                                                操作
</td>
                                                        
</tr>
                                                        
<asp:Repeater ID="rptView" runat="server">
                                                            
<ItemTemplate>
                                                                
<tr align="center" bgcolor="#f9f9f9" id="tr_<%# ((ORDERDETAIL)Container.DataItem).Product.ID %>">
                                                                    
<td align="left">
                                                                        
<asp:HyperLink Target="_blank" NavigateUrl='<%# "~/" + ((ORDERDETAIL)Container.DataItem).Product.ChannelID.ToString() + "_" + ((ORDERDETAIL)Container.DataItem).Product.ID.ToString() + ".aspx" %>'
                                                                            Text='
<%# ((ORDERDETAIL)Container.DataItem).Product.Name %>' runat="server" /></td>
                                                                    
<td>
                                                                        
<%String.IsNullOrEmpty(((ORDERDETAIL)Container.DataItem).Product.Unit) ? "" : ((ORDERDETAIL)Container.DataItem).Product.Unit %>
                                                                    
</td>
                                                                    
<td>
                                                                        
<input style="text-align: right;" onbeforepaste="clipboarddata.setdata('text',clipboarddata.getdata('text').replace(/[^\d]/g,''))"
                                                                            id
="txtNum_<%# ((ORDERDETAIL)Container.DataItem).Product.ID %>" onkeyup="value=value.replace(/[^\d]/g,'');"
                                                                            onblur
="if(this.value.length==0)this.value=0;modify(<%# ((ORDERDETAIL)Container.DataItem).Product.ID %>,value);"
                                                                            maxlength
="2" size="4" value="<%# ((ORDERDETAIL)Container.DataItem).Number %>"
                                                                            name
="txtNumber" /></td>
                                                                    
<td style="padding-left: 20px" align="right">
                                                                        
<del>
                                                                            
<%# ((ORDERDETAIL)Container.DataItem).Product.Price %>
                                                                        
</del>
                                                                        
<input name='txtPrice' id="txtPrice_<%# ((ORDERDETAIL)Container.DataItem).Product.ID %>"
                                                                            type
="hidden" value='<%# ((ORDERDETAIL)Container.DataItem).Product.Price %>' />
                                                                    
</td>
                                                                    
<td style="padding-left: 20px" align="right">
                                                                        
<input style="text-align: right;" name='txtVipPrice' id="txtVipPrice_<%# ((ORDERDETAIL)Container.DataItem).Product.ID %>"
                                                                            type
="hidden" value='<%# ((ORDERDETAIL)Container.DataItem).Product.VipPrice %>' />
                                                                        
<%# ((ORDERDETAIL)Container.DataItem).Product.VipPrice %>
                                                                    
</td>
                                                                    
<td style="padding-left: 20px" align="right">
                                                                        
<input style="text-align: right;border: none 0px white; background-color: White;" size="4" name='txtSubTotal' id="txtSubTotal_<%# ((ORDERDETAIL)Container.DataItem).Product.ID %>"
                                                                            type
="text" readonly="readonly" value='<%# ((ORDERDETAIL)Container.DataItem).Product.VipPrice * ((ORDERDETAIL)Container.DataItem).Number %>' /></td>
                                                                    
<td>
                                                                        
<href="javascript:remove(<%# ((ORDERDETAIL)Container.DataItem).Product.ID %>);"><font
                                                                            
color="#ff0000">删除</font></a></td>
                                                                
</tr>
                                                            
</ItemTemplate>
                                                        
</asp:Repeater>
                                                        
<tr align="right" bgcolor="#f9f9f9">
                                                            
<td colspan="7">
                                                                购物车中共有
                                                                
<asp:Label ID="lbTotalNum" ForeColor="red" runat="server" />
                                                                件商品,共计 
<font class="font_red"><asp:Label ID="lbTotalMoney" runat="server" />
                                                                    元
</font>(不包括邮费) &nbsp;您节省了<font class="font_red"><asp:Label ID="lbDiscount" runat="server" /></font>
                                                            
</td>
                                                        
</tr>
                                                        
<tr align="left" bgcolor="#f9f9f9">
                                                            
<td colspan="7">
                                                                
<img style="width: 104px; height: 27px; cursor: pointer;" onclick="modifyAll();"
                                                                    height
="23" alt="单击这里保存您所修改的商品数量" width="85" src="../../Icon/ShopCart/shopc_13_02.gif"
                                                                    border
="0" />
                                                                
&nbsp;
                                                                
<img style="cursor: pointer" onclick="clearCart();" height="27" alt="单击这里清空所有购买的商品"
                                                                    src
="../../Icon/ShopCart/shopc_13_03.gif" width="104" />&nbsp;</td>
                                                        
</tr>
                                                    
</tbody>
                                                
</table>
                                            
</td>
                                        
</tr>
                                        
<tr align="right" bgcolor="#fafafa">
                                            
<td>
                                                
<img height="15" src="../../Icon/ShopCart/shopc_20.gif" width="771" /></td>
                                        
</tr>
                                    
</tbody>
                                
</table>
                            
</td>
                        
</tr>
                        
<tr>
                            
<td align="right">
                                
<img style="cursor: hand" onclick="javascript:window.close();" height="42" alt="点击继续购买您喜欢的其它商品"
                                    src
="../../Icon/ShopCart/shopc_13_01.gif" width="143" vspace="10" />&nbsp; &nbsp;
                                
&nbsp;
                                
<img style="cursor: hand" onclick="location.href='./ClientInfo.aspx';" height="42"
                                    alt
="点击去收银台结帐" hspace="10" src="../../Icon/ShopCart/shopc_13.gif" width="143"
                                    vspace
="10" id="IMG1" /></td>
                        
</tr>
                        
<tr>
                            
<td class="style2" align="center">
                            
</td>
                        
</tr>
                    
</tbody>
                    
<tr>
                        
<td>
                        
</td>
                    
</tr>
                
</table>
            
</div>
        
</asp:View>
    
</asp:MultiView>
    
<br />
    
<br />
</asp:Content>

[CS]
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.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using AW.Components;
using AjaxPro;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;

using AW.Components.Helpers;

public partial class _Default : System.Web.UI.Page {
    
protected string Key = "ORDERDETAIL_" + CContext.Current.SiteOwnerUserID.ToString();
    
protected void Page_Load(object sender, EventArgs e) {
        Utility.RegisterTypeForAjax(
typeof(_Default));

        
string action = Request["Act"];
        
int id;

        
if (string.IsNullOrEmpty(action))
            action 
= "list";

        
if (int.TryParse(Request["ID"], out id)) {
            
if (action == "add"{
                CProduct prodcut 
= CProducts.GetProduct(id, CContext.Current.SiteOwnerUserID);
                
if (prodcut == null{
                    CJS.AlertAndGoUrl(
"此商品已经被删除!", Request.Url.AbsolutePath);
                    
return;
                }

                AddProductToOrder(id, 
1);
                Response.Redirect(Request.Url.AbsolutePath, 
true);
                
return;
            }

        }

        rptView.DataSource 
= GetOrders();
        rptView.DataBind();

        MultiView1.ActiveViewIndex 
= 0;
    }


    
public List<ORDERDETAIL> GetOrders() {
        HttpCookie cookie;
        cookie 
= Request.Cookies[Key] == null ? new HttpCookie(Key) : Request.Cookies[Key];
        NameValueCollection nvc 
= CHttpHelper.Base64Decode(cookie.Value);
        List
<ORDERDETAIL> orders = new List<ORDERDETAIL>();
        
int totalNum = 0;
        
double totalMoney = 0.00;
        
double totalVipMoney = 0.00;
        
for (int i = 0; i < nvc.Count; i++{
            ORDERDETAIL ord 
= new ORDERDETAIL(int.Parse(nvc.Keys[i]), int.Parse(nvc[i]));
            orders.Add(ord);
            totalNum 
+= int.Parse(nvc[i]);
            totalMoney 
+= (ord.Number * (ord.Product==null?0:ord.Product.Price));
            totalVipMoney 
+= (ord.Number * (ord.Product==null?0:ord.Product.VipPrice));
        }

        lbTotalNum.Text 
= totalNum.ToString();
        lbTotalMoney.Text 
= totalVipMoney.ToString("0.00");
        lbDiscount.Text 
= (totalMoney - totalVipMoney).ToString("0.00");
        
return orders;
    }


    
public void AddProductToOrder(int pID, int num) {
        HttpCookie cookie;
        cookie 
= Request.Cookies[Key] == null ? new HttpCookie(Key) : Request.Cookies[Key];
        cookie.Path 
= Request.ApplicationPath;
        cookie.Domain 
= "." + Request.Url.Host;
        NameValueCollection nvc 
= CHttpHelper.Base64Decode(cookie.Value);
        
if (nvc[pID.ToString()] != null)
            nvc[pID.ToString()] 
= (int.Parse(nvc[pID.ToString()]) + num).ToString();
        
else
            nvc.Add(pID.ToString(), num.ToString());

        cookie.Value 
= CHttpHelper.Base64Encode(nvc);
        Response.AppendCookie(cookie);
    }


    [AjaxMethod]
    
public RESUTLINFO ModifyProductNumber(int pID, int num, string cookieStr) {
        NameValueCollection nvc 
= CHttpHelper.Base64Decode(cookieStr);
        nvc[pID.ToString()] 
= num.ToString();
        
return new RESUTLINFO(pID, int.Parse(nvc[pID.ToString()]),CHttpHelper.Base64Encode(nvc));
    }


    [AjaxMethod]
    
public RESUTLINFO RemoveProductFromOrder(int pID, string cookieStr) {
        NameValueCollection nvc 
= CHttpHelper.Base64Decode(cookieStr);
        nvc.Remove(pID.ToString());
        
return new RESUTLINFO(pID, CHttpHelper.Base64Encode(nvc));
    }

}


[CHttpHeler]
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Specialized;
using System.Web;

namespace AW.Components.Helpers {
    
public class CHttpHelper {
        
private CHttpHelper() { }

        
GetString

        
public static string Base64Encode(NameValueCollection nvc) {
            
return Convert.ToBase64String(Encoding.Default.GetBytes(GetString(nvc)), Base64FormattingOptions.None);
        }


        
public static NameValueCollection Base64Decode(string base64String) {
            
if (string.IsNullOrEmpty(base64String))
                
return new NameValueCollection();

            
return HttpUtility.ParseQueryString(GetString(HttpUtility.UrlDecode(base64String)));
        }

    }


    
public struct ORDERDETAIL {
        
public ORDERDETAIL(int pID, int num) {
            Product 
= CProducts.GetProduct(pID, CContext.Current.SiteOwnerUserID);
            Number 
= num;
        }


        
public CProduct Product;
        
public int Number;

        
public void ParseFromString(string str) {

        }


        
public int ProudctID {
            
get {
                
return Product == null ? 0 : Product.ID;
            }

        }


        
public override string ToString() {
            
return ProudctID + ":" + Number.ToString();
        }

    }


    
public struct RESUTLINFO {
        
public string NVC;
        
public int PID;
        
public int TOTAL;

        
public RESUTLINFO(int pID, string nvc) {
            PID 
= pID;
            NVC 
= nvc;
            TOTAL 
= 0;
        }


        
public RESUTLINFO(int pID, int total, string nvc) {
            PID 
= pID;
            NVC 
= nvc;
            TOTAL 
= total;
        }

    }

}


演示:http://clover.dollarscn.com/scripts/shopcart/?act=add&id=1102  :)
posted on 2005-12-03 18:27  嘻哈呵嘿  阅读(1825)  评论(0编辑  收藏  举报
欢迎访问无垠IT教学网论坛