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> </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'> </td> </tr> </table> </td> </tr> <tr> <td style="text-align: center"> 商品金额总计:<span id="tMoney" style="font-size: 20px; color: red; font-weight: bold"> >0</span>元</td> <td> <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>
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; } } } }

浙公网安备 33010602011771号