webfrom-横贯四方-06-购物车

实现效果:可实现商品数量的修改

<%@ Page Title="" Language="C#" MasterPageFile="~/Master/MainMaster.Master" AutoEventWireup="true" CodeBehind="ShoppingCart.aspx.cs" Inherits="BookShopManager.Web.Cart.ShoppingCart" %>

<%@ Import Namespace="BookShopManager.Model" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Header" runat="server">
    <link href="../Css/themes/ui-lightness/jquery-ui-1.8.2.custom.css" rel="stylesheet" />
    <script src="../js/jquery-ui-1.8.2.custom.min.js"></script>
    <script type="text/javascript">
        $(function () {
            getTotalMoney();
        });
        function changeBar(oper, cartId, bookId) {
            var count = $("#txtCount" + bookId).val();
            count = parseInt(count);
            if (oper == "-") {
                count --;
                if (count < 1) {
                    alert("商品数量不能为0");
                    return false;
                } 
            } else if (oper == "+") {
                count++;
                if (count > 200) {
                    alert("商品数量不能超过200");
                    return false;
                }
            } else {
                alert("参数错误!!");
                return false;
            }
            //Ajax异步请求
            $.post("/Ashx/ModifyCartCount.ashx", { "cartID": cartId, "count": count,"action":"modify" }, function (data) {
                var serverData = data.split(':');
                if (serverData[0] == "ok") {                    
                    $("#txtCount" + bookId).val(count);
                    getTotalMoney();
                } else if (serverData[0] == "no") {
                    alert("更新失败!!");
                    return false;
                } else{
                    alert("参数错误!!");
                    return false;
                }
               
            });
        }
        //计算总金额
        function getTotalMoney() {
            var totalMoney = 0;
            $(".align_Center:gt(0)").each(function () {
                var price = $(this).find(".price").text();
                var count = $(this).find("input").val();
                totalMoney = parseFloat(totalMoney) +( parseFloat(price) * parseFloat(count));
            });
            $("#tMoney").text(fmoney(totalMoney, 2));
        }
        //格式化货币
        function fmoney(s, n) {
            n = n > 0 && n <= 20 ? n : 2;
            s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";//更改这里n数也可确定要保留的小数位  
            var l = s.split(".")[0].split("").reverse(),
         r = s.split(".")[1];
            t = "";
            for (i = 0; i < l.length; i++) {
                t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
            }
            return t.split("").reverse().join("") + "." + r.substring(0, 2);//保留2位小数  如果要改动 把substring 最后一位数改动就可  
        }
        //删除购物车
        function removeProductOnShoppingCart(cartId,obj) {
            if (confirm("确定要删除该商品吗?")) {
                $.post("/Ashx/ModifyCartCount.ashx", { "action": "delete", "cartId": cartId }, function (data) {
                    var serverData = data.split(':');
                    if (serverData[0] == "ok") {
                        $(obj).parent().parent().remove();
                        getTotalMoney();
                    } else if (serverData[0] == "no") {
                        alert("更新失败!!");
                        return false;
                    } else {
                        alert("参数错误!!");
                        return false;
                    }
                });
            }
        }
        //手动更新文本框中的数量
        function changeTextOnBlur(cartId,control) {
            var count = $(control).val();
            var reg = /^\d+$/;
            if (reg.test(count)) {
                $.post("/Ashx/ModifyCartCount.ashx", { "cartID": cartId, "count": count, "action": "modify" }, function (data) {
                    var serverData = data.split(':');
                    if (serverData[0] == "ok") {
                        getTotalMoney();
                    } else if (serverData[0] == "no") {
                        alert("更新失败!!");
                        return false;
                    } else {
                        alert("参数错误!!");
                        return false;
                    }
                });
            } else {
                showDialog("商品数量只能是数字");
                $(control).val(  $("#pCount").val());
            }
        }
        //文本框获得焦点执行该方法
        function changeTxtOnFocus(control) {
            var count = $(control).val();
            $("#pCount").val(count);
        }
        //弹出登录窗口
        function showDialog(msg) {
            $("#errorMsg").text(msg);
            $("#showResult").css("display", "block");
            $("#showResult").dialog({
                height: 180,
                modal: true,
                buttons: {
                    ok:function(){
                        $(this).dialog("close");
                    }
                }
            });
        }
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

    <div>
        <table cellpadding="0" cellspacing="0" width="98%">
            <tr>
                <td colspan="2">
                    <img height="27"
                        src="../Images/shop-cart-header-blue.gif" width="206" /><img alt=""
                            src="../Images/png-0170.png" /><asp:HyperLink ID="HyperLink1" runat="server"
                                NavigateUrl="~/myorder.aspx">我的订单</asp:HyperLink>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
            </tr>
            <tr>
                <td colspan="2" width="98%">
                    <table cellpadding='0' cellspacing='0' width='100%'>
                        <tr class='align_Center Thead'>
                            <td width='7%' style='height: 30px'>图片</td>
                            <td>图书名称</td>
                            <td width='14%'>单价</td>
                            <td width='11%'>购买数量</td>
                            <td width='7%'>删除图书</td>
                        </tr>
                        <%foreach (Cart cartModel in CartList)
                          {%>
                        <!--一行数据的开始 -->
                        <tr class='align_Center'>
                            <td style='padding: 5px 0 5px 0;'>
                                <img src='/images/bookcovers/<%=cartModel.Book.ISBN%>.jpg' width="40" height="50" border="0" /></td>
                            <td class='align_Left'><%=cartModel.Book.Title %></td>
                            <td>
                                <span class='price'><%=cartModel.Book.UnitPrice.ToString("0.00")%></span>
                            </td>
                            <td><a href='#none' title='减一' onclick="changeBar('-',<%=cartModel.Id%>,<%=cartModel.Book.Id %>)" style='margin-right: 2px;'>
                                <img src="Images/bag_close.gif" width="9" height="9" border='none' style='display: inline' /></a>
                                <input type='text' id='txtCount<%=cartModel.Book.Id%>' name='txtCount4945' maxlength='3' style='width: 30px' onkeydown='if(event.keyCode == 13) event.returnValue = false' value='<%=cartModel.Count %>' onfocus='changeTxtOnFocus(this);' onblur="changeTextOnBlur(<%=cartModel.Id%>,this);" />
                                <a href='#none' title='加一' onclick="changeBar('+',<%=cartModel.Id%>,<%=cartModel.Book.Id %>)" style='margin-left: 2px;'>
                                    <img src='/images/bag_open.gif' width="9" height="9" border='none' style='display: inline' /></a>   </td>
                            <td>
                                <a href='#none' id='btn_del_1000357315' onclick="removeProductOnShoppingCart(<%=cartModel.Id%>,this)">删除</a></td>
                        </tr>
                        <!--一行数据的结束 -->
                        <%} %>

                        <tr>
                            <td class='align_Right Tfoot' colspan='5' style='height: 30px'>&nbsp;</td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td style="text-align: center">&nbsp;&nbsp;&nbsp; 商品金额总计:<span id="tMoney" style="font-size: 20px; color: red; font-weight: bold"> 
                   >0</span>元</td>
                <td>&nbsp;
               <a href="/Member/BookList.aspx">
                   <img alt="" src="../Images/gobuy.jpg" width="103" height="36" border="0" />
               </a><a href="OrderConfirm.aspx">
                   <img src="../images/balance.gif"
                       border="0" /></a>

                </td>
            </tr>
        </table>
    </div>
    <div id="showResult" style="display: none">
        <span id="errorMsg" style="font-size: 20px; color: red"></span>
    </div>
    <input type="hidden" id="pCount" />
    
</asp:Content>
    
ShoppingCart
using BookShopManager.Web.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace BookShopManager.Web.Ashx
{
    /// <summary>
    /// ModifyCartCount 的摘要说明
    /// </summary>
    public class ModifyCartCount : IHttpHandler
    {
        BLL.Cart cartManager = new BLL.Cart();
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string action = context.Request["action"];
            if (action == "modify")
            {
                ModifyCount(context);
            }
            else if (action == "delete")
            {
                ClearCount(context);
            }
            else {
                context.Response.Write("no:参数有误");
            }
        }
        /// <summary>
        /// 修改购物车商品数量
        /// </summary>
        /// <param name="context"></param>
        private void ModifyCount(HttpContext context)
        {

            int cartId = ConvertHelper.ToInt(context.Request["cartID"]);
            int count = ConvertHelper.ToInt(context.Request["count"]);
            Model.Cart cartModel = cartManager.GetModel(cartId);
            if (cartModel == null)
            {
                context.Response.Write("no:数据出错");
            }
            cartModel.Count = count;
            if (cartManager.Update(cartModel))
            {
                context.Response.Write("ok:数据更新成功");
            }
            else
            {
                context.Response.Write("no:数据出错");
            }
        }
        /// <summary>
        /// 清空购物车中某件商品
        /// </summary>
        private void ClearCount(HttpContext context) {
            int cartId = ConvertHelper.ToInt(context.Request["cartID"]);
            Model.Cart cartModel = cartManager.GetModel(cartId);
            if (cartModel == null)
            {
                context.Response.Write("no:该商品在您的购物车中不存在");
            }
            if (cartManager.Delete(cartId))
            {
                context.Response.Write("ok:数据更新成功");
            }
            else
            {
                context.Response.Write("no:数据出错");
            }
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
View Code

 

posted @ 2017-10-11 20:27  逍遥小天狼  阅读(147)  评论(0)    收藏  举报