本帖最后由 lengcj 于 2010-07-22 10:46:58 编辑

解决方案 »

  1.   

    商品购买页面代码部分aspx.sc protected void btnSureDingzhi_Click(object sender, EventArgs e)
     {
      // //传递的参数是订制的id,参数列表,预览图片的地址,订制数量,订制的总价,使用cookie保存值
      string userID = "0";
      DingzhiOrderModel model = new DingzhiOrderModel();
      model.Userid = 0;
      if (Request.Cookies["bw_user"] != null)
      {
       model.Userid = Convert.ToInt32(Request.Cookies["bw_user"]["user_id"].ToString());
       userID = Request.Cookies["bw_user"]["user_id"].ToString();
      }
      if (Request.QueryString["id"] != null)
      {
       this.ViewState["proid"] = Request.QueryString["id"];
      }  DingzhiOrderManager ordermanager = new DingzhiOrderManager();  string subProNO = string.Empty;
      int subNum = 0;
      //int subSize = int.Parse(ddlproSize.SelectedValue);
      Maticsoft.Model.dt_dingzhi pro = new Maticsoft.Model.dt_dingzhi();
      Maticsoft.BLL.dt_dingzhi bll = new Maticsoft.BLL.dt_dingzhi();
      pro.id = int.Parse(this.ViewState["proid"].ToString());
      pro = bll.GetModel(pro.id);
      subProNO = pro.id.ToString();
      string SLbox = slbox.Text;
      this.ViewState["proid"] = pro.id;
      this.ViewState["product_price2"] = pro.price;
      //当商品设置为促销商品,且在促销期内,促销限量 不为0时 显示促销  string proid = string.Empty;
      bool isAdd = false;
      // string lbpri = Convert.ToInt32(this.lblprice.Text);
      if (this.hidprice.Value != "0.0000")
      {
       if (Request.Cookies["Order1"] != null && Request.Cookies["Order1"].ToString() != "")
       {
        string cookiesValue = Request.Cookies["Order1"].Value.ToString();
        //解码
        cookiesValue = HttpUtility.UrlDecode(cookiesValue);
        string[] proRecord = cookiesValue.Split('|');
        for (int i = 0; i < proRecord.Length; i++)
        {
         string[] proArr = proRecord[i].Split(',');
         if (proArr.Length == 5)
         {
          proid = proArr[0].ToString();
          if (subProNO == proid)
          {
           isAdd = true;
           break;
          }
         }
        }
        if (isAdd == true)
        {
         Alert.location("../order/Send.aspx?typeUrl=2");
        }
        else
        {
         setCook(subProNO, SLbox, "1", this.ViewState["product_price2"].ToString(), userID, "Order1");
         Alert.location("../order/Send.aspx?typeUrl=2");
        }   }
       else
       {
        setCook(subProNO, SLbox, "1", this.ViewState["product_price2"].ToString(), userID, "Order1");
        Alert.location("../order/Send.aspx?typeUrl=2");
       }
      }
      else
      {
       Alert.alert(this.Page, "暂时不能购买!");
      }
     } void setCook(string subProNO, string num, string isx, string proprice, string userID, string Actions)
     {
      //写入Cookie
      //string duserID = "0";
      //if (Request.Cookies["bw_user"] != null)
      //{
      // duserID = Request.Cookies["bw_user"]["user_id"].ToString();
     //}
      string proRecord = subProNO + "," + num + "," + isx + "," + proprice + "," + userID;
      //可能有中文,进行预编码
      proRecord = HttpUtility.UrlEncode(proRecord);
      Tool.operateBuyCookie(Actions, proRecord, 100);
      int jj = 4;
     }tool.sc里的operateBuyCookie部分    public static bool operateBuyCookie(string cookieName, string cookieValue, int count)
        {
            HttpCookie myCookie = new HttpCookie(cookieName);
            //cookie 有效期 一个月
            myCookie.Expires.AddMonths(1);
            if (HttpContext.Current.Request.Cookies[cookieName] != null && !HttpContext.Current.Request.Cookies[cookieName].Value.Equals(""))
            {
                myCookie = HttpContext.Current.Request.Cookies[cookieName];
                myCookie.Value = myCookie.Value + "|" + cookieValue;
            }
            else
            {
                myCookie.Value = cookieValue;
            }
            string[] valueArray = myCookie.Value.Split('|');
            ///超过指定个数,把前面的部分清除
            if (valueArray.Length > count)
            {
                myCookie.Value = "";
                for (int i = valueArray.Length - count; i < valueArray.Length; i++)
                {
                    if (i == valueArray.Length - count)
                    {
                        myCookie.Value += valueArray[i];
                    }
                    else
                    {
                        myCookie.Value = myCookie.Value + "|" + valueArray[i];
                    }
                }
            }
            HttpContext.Current.Response.Cookies.Add(myCookie);
            return true;
        }
      

  2.   

    购物车页面aspx部分       <table id="gouwuche03" cellspacing="0" cellpadding="0">
            <tr>
             <td style="height: 40px;">
              <img src="../pics/gouwuche01.jpg" alt="" style="margin: 8px 0 0 0; border: solid 0px #dddddd; width: 740px;" />
             </td>
            </tr>
            <tr>
             <th style="height: 40px; background-color: #eeeeee; height: 30px; font-size: 14px;">
              &nbsp;&nbsp;您的购物车<span style="color: #ff0000;">&nbsp;&nbsp;如果您的商品未加入到购物车请您退出登录后再在左列登录一次即可。</span><asp:Label ID="Label1" runat="server" Text="" ForeColor="#eeeeee" /><asp:Label ID="Label2" runat="server" Text="" Font-Bold="false" ForeColor="#eeeeee" />
             </th>
            </tr>
            <tr>
             <td>
              <table id="gouwuche05" cellspacing="0" cellpadding="0" bordercolor="#C0DAF1" border="1">
               <tr>
                <th style="width: 10%; height: 30px;">
                 &nbsp;&nbsp;
                </th>
                <th style="width: 25%">
                 产品名称</th>
                <th style="width: 10%">
                 类型</th>
                <th style="width: 10%">
                 单价</th>
                <th style="width: 10%">
                 数量</th>
                <th style="width: 15%">
                 总价</th>
                <th style="width: 5%">
                 操作</th>
               </tr>
              </table>
              <asp:DataList ID="dlProList" runat="server" Width="100%" OnItemCommand="dlProList_ItemCommand" OnItemDataBound="dlProList_ItemDataBound">
               <ItemTemplate>
                <table id="gouwuche06" cellspacing="0" cellpadding="0" bordercolor="#C0DAF1" border="1" width="100%">
                 <tr>
                  <td style="width: 10%;">
                   <img height="100" src='<%# Eval("img")%>' alt="" style="border: solid 1px #dddddd;" />
                  </td>
                  <td style="width: 25%;">
                   <asp:Label runat="server" ID="lbproNamelb" Text='<%# Eval("proName")%>' ForeColor="Red" />
                  </td>
                  <td style="width: 10%;">
                   <%# Eval("proSize")%>
                  </td>
                  <td style="width: 10%;">
                   ¥<span style="color: red;"><%# Eval("proItPrice")%></span><%# (Eval("isCx").ToString() != "3") ? "元" : "积分"%>
                  </td>
                  <td style="width: 10%; text-align: center;">
                   <asp:TextBox ID="txtproNum" runat="server" MaxLength="8" Text='<%# Eval("proNum") %>' Width="30px"></asp:TextBox><br />
                   <asp:LinkButton ID="lbUpdata" runat="server" CommandArgument='<%# Eval("index")%>' CommandName="updata" ValidationGroup="group1" OnClick="lbUpdata_Click" Font-Underline="true">更新</asp:LinkButton><br />
                   <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtproNum" ErrorMessage="*" ValidationGroup="group1"></asp:RequiredFieldValidator>
                   <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtproNum" ErrorMessage="数字" ValidationExpression="[0-9]{1,5}" ValidationGroup="group1"></asp:RegularExpressionValidator>
                   <asp:HiddenField ID="hfproNo" runat="server" Value='<%#Eval("proNum") %>' />
                   <asp:HiddenField ID="hfproId" runat="server" Value='<%#Eval("proId")%>' />
                   <asp:HiddenField ID="hfCatefist" runat="server" Value='<%#Eval("proType")+"|"+Eval("proCate") %>' />
                   <asp:HiddenField ID="hfType" runat="server" Value='<%#Eval("proSize") %>' />
                  </td>
                  <td style="width: 15%;">
                   ¥<span style="color: red;"><%# Eval("score")%></span><%# (Eval("ProNo").ToString() != "3") ? "元" : "积分"%>
                  </td>
                  <td style="width: 5%;">
                   <asp:LinkButton ID="lbDelete" runat="server" CommandArgument='<%# Eval("index")%>' CommandName="delete">删除</asp:LinkButton>
                  </td>
                 </tr>
                </table>
               </ItemTemplate>
              </asp:DataList>
             </td>
            </tr>
            <tr>
             <td>
              <table id="Table2" cellspacing="0" cellpadding="0" bordercolor="#C0DAF1" border="1" style="width: 100%;">
               <tr>
                <td style="width: 55%; height: 30px;">
                 <span style="color: #ff0000;">欢迎光临中国酒水定制网<br /><b>注意:</b>如果您的商品没有添加到购物车请您退出登录后再在左列登录一次即可。</span>
                </td>
                <td style="width: 10%; text-align: center;">
                 &nbsp;<b>金额合计</b>:</td>
                <td style="width: 15%; text-align: center;">
                 ¥<asp:Label ID="labprice" runat="server" OnPreRender="labprice_PreRender" ForeColor="Red"></asp:Label>元
                </td>
                <td style="width: 5%">
                 &nbsp;&nbsp;</td>
               </tr>
              </table>
              <table id="Table1" cellspacing="0" cellpadding="0" width="100%">
               <tr>
                <td>
                </td>
                <td>
                </td>
               </tr>
              </table>
             </td>
            </tr>
            <tr>
             <td>
              <table id="gouwuche09" cellspacing="0" cellpadding="0" width="100%" style="margin-top: 10px;">
               <tr>
                <td style="height: 26px; width: 86px; background: url(../images/view_10.jpg)  no-repeat; text-align: center;">
                 <asp:LinkButton ID="lbRetrnShop" runat="server" OnClick="lbRetrnShop_Click" ForeColor="white">继续购物</asp:LinkButton>
                </td>
                <td style="">
                 &nbsp;&nbsp;
                </td>
                <td style="width: 86px; background: url(../images/view_10.jpg)  no-repeat; text-align: center;">
                 <a href="#" class="bt"></a>&nbsp;<asp:LinkButton ID="lbDelectpro" runat="server" OnClick="lbDelectpro_Click" ForeColor="white">清空购物车</asp:LinkButton>
                </td>
                <td style="">
                 &nbsp;&nbsp;
                </td>
                <td style="width: 100px; background: url(../images/view_18.jpg)  no-repeat; text-align: center;">
                 <asp:LinkButton ID="lbNext" runat="server" ValidationGroup="group1" ForeColor="white" OnClick="lbNext_Click">提交订单</asp:LinkButton>
                </td>
               </tr>
              </table>
              <table width="80%" cellpadding="0" cellspacing="0" id="gouwuche16" style="margin: 10px 0 10px 60px;">
               <tr>
                <td>
                </td>
               </tr>
               <tr>
                <td>
                 <div style="text-align: left; color: #ff0000;">
                  <img src="../images/den.gif" width="17" height="22" alt="" /><b>提示</b>:
                  <br />
                  1.如果您的是商品未加入到购物车请您清除IE缓存后或者退出登录后再刷新购物车页面;
                  <br />
                  2.修改数量请在数字列文本框填入你要修改的数字后在再点<b style="text-decoration:uderline;">更新</b>;
                  <br />
                  3.继续挑选其他商品,请按“继续购物”按钮,购物车窗口会关闭,但选中的产品仍会保留在购物车中;
                  <br />
                  4.确认购买目前购物车中全部商品,请按“提交定制申请”按钮,填写送货信息。
                  <br />
                 </div>
                </td>
               </tr>
              </table>
             </td>
            </tr>
           </table>
      

  3.   

    购物车页面aspx.sc部分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 Common;public partial class order_Send : System.Web.UI.Page
    {
     private float price;
     public float Price
     {
      get { return price; }
      set { this.price = value; }
     }
     private float score;
     public float Score
     {
      get { return score; }
      set { this.score = value; }
     }
     private int actions;
     public int Actions
     {
      get { return actions; }
      set { this.actions = value; }
     } public int index; protected void Page_Load(object sender, EventArgs e)
     {
      if (!IsPostBack)
      {
       if (Request.QueryString["typeUrl"] != null)
       {
        string id = Request.QueryString["typeUrl"].ToString();
        txtUrl.Value = id;
        if (Request.Cookies["bw_user"] != null)
        {
         string userID = Request.Cookies["bw_user"]["user_id"].ToString();
         Label1.Text = userID;
        }
        getCarts();
        getDlCustom();
       }  } }
     /// <summary>
     /// 继续购物
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     protected void lbRetrnShop_Click(object sender, EventArgs e)
     {
      if (txtUrl.Value != "")
      {
       if (txtUrl.Value == "10")
       {
        Alert.location("../ProductListzt.aspx?type=9");
       }
       else
       {
        Alert.location("../feedback/dingzhi.aspx");
       }
      }
      else
      {
       Alert.location("../ProductListzt.aspx?type=9");
      } }
     /// <summary>
     /// 清空购物车
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     protected void lbDelectpro_Click(object sender, EventArgs e)
     {
      Tool.deleteCookie("Order1");
      this.dlProList.DataSource = "";
      this.dlProList.DataBind();
     } /// <summary>
     /// 保存总价
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     protected void labprice_PreRender(object sender, EventArgs e)
     {
      this.labprice.Text = price.ToString("0.00");
      HttpCookie myCookie = new HttpCookie("totalMoney");
      myCookie.Value = price.ToString();
      myCookie.Expires.AddMonths(1);
      HttpContext.Current.Response.Cookies.Add(myCookie);
     }
     protected void lbNext_Click(object sender, EventArgs e)
     {
      if (Request.Cookies["Order1"] != null && !Request.Cookies["Order1"].Value.Equals(""))
      {
       Response.Redirect("Default.aspx");
      }
      else
      {
       Jscript.JsAlert("请先购买商品!", this.Page);
      }
      //}
     } protected void lbUpdata_Click(object sender, EventArgs e)
     { } /// <summary>
     /// 获取购物车的所有商品
     /// </summary>
     protected void getCarts()
     {
      #region
      //string userID = "0";
      actions = 0;
      float amountPrice = 0;
      int amountScore = 0;
      if (Request.Cookies["Order1"] != null && Request.Cookies["Order1"].ToString() != "")
      {
       string cookiesValue = Request.Cookies["Order1"].Value.ToString();
       //解码
       cookiesValue = HttpUtility.UrlDecode(cookiesValue);
       Label2.Text = cookiesValue;
       string[] proRecord = cookiesValue.Split('|');
       DataTable dt = new DataTable();
       dt.Columns.Add("userId");
       dt.Columns.Add("proId");
       dt.Columns.Add("proName");
       dt.Columns.Add("ProNo");
       dt.Columns.Add("proSize");
       dt.Columns.Add("proNum");
       dt.Columns.Add("isCx");
       dt.Columns.Add("proItPrice");
       dt.Columns.Add("product_dh");
       dt.Columns.Add("proColor");
       dt.Columns.Add("score");
       dt.Columns.Add("proAmount");
       dt.Columns.Add("img");
       dt.Columns.Add("colorCate");
       dt.Columns.Add("index");
       dt.Columns.Add("proType");
       dt.Columns.Add("proCate");
       for (int i = 0; i < proRecord.Length; i++)
       {
        string[] proArr = proRecord[i].Split(',');
        if (proArr.Length == 5)
        {
         //Label2.Text = " " + proArr[0] + "," + proArr[1] + "," + proArr[2] + "," + proArr[3] + "," + proArr[4];
         if (proArr[2].ToString() == "1")
         {
          DataRow dr = dt.NewRow();
          Maticsoft.Model.dt_dingzhi progift = new Maticsoft.Model.dt_dingzhi();
          Maticsoft.BLL.dt_dingzhi bll = new Maticsoft.BLL.dt_dingzhi();
          progift.id = int.Parse(proArr[0].ToString());
          progift = bll.GetModel(progift.id);
          dr["proName"] = progift.name;
          dr["proId"] = proArr[0].ToString();
          dr["ProNo"] = proArr[2].ToString();
          dr["proNum"] = proArr[1].ToString();
          dr["isCx"] = proArr[2].ToString();
          dr["proItPrice"] = float.Parse(proArr[3].ToString()).ToString("0.00");
          dr["proSize"] = "定制酒水";
          dr["score"] = float.Parse(dr["proItPrice"].ToString()) * int.Parse(dr["proNum"].ToString());
          dr["proAmount"] = ((int.Parse(proArr[1].ToString())) * (float.Parse(proArr[3].ToString()))).ToString("0.00");
          amountPrice += float.Parse(dr["proAmount"].ToString());
          dr["img"] = "../" + progift.image;
          dr["proType"] = 1;
          dr["proCate"] = 1;
          dr["colorCate"] = 1;
          dr["index"] = i;
          dr["userId"] = "0";
          dt.Rows.Add(dr);
         }
         else if (proArr[2].ToString() == "3")
          {
           DataRow dr = dt.NewRow();
           Maticsoft.Model.dt_product progift = new Maticsoft.Model.dt_product();
           Maticsoft.BLL.dt_product bll = new Maticsoft.BLL.dt_product();
           progift.product_id = int.Parse(proArr[0].ToString());
           progift = bll.GetModel(progift.product_id);
           dr["proName"] = progift.product_name;
           dr["proId"] = proArr[0].ToString();
           dr["ProNo"] = proArr[2].ToString();
           dr["proNum"] = proArr[1].ToString();
           dr["isCx"] = proArr[2].ToString();       //dr["youhui"] = proArr[4].ToString();
           dr["proItPrice"] = float.Parse(proArr[3].ToString()).ToString();
           dr["product_dh"] = float.Parse(proArr[3].ToString()).ToString();
           dr["proSize"] = "积分兑换品";
           dr["score"] = float.Parse(dr["proItPrice"].ToString()) * int.Parse(dr["proNum"].ToString());
           dr["proAmount"] = ((int.Parse(proArr[1].ToString())) * (float.Parse(proArr[3].ToString()))).ToString("0.00");
           amountPrice += 0;
           // amountScore += int.Parse(dr["score"].ToString());
           dr["img"] = "../" + progift.product_pic;
           dr["proType"] = 1;
           dr["proCate"] = 1;
           dr["colorCate"] = 1;
           dr["userId"] = "0";
           dr["index"] = i;
           dt.Rows.Add(dr);
          }
          else if (proArr[2].ToString() == "2")
          {
           DataRow dr = dt.NewRow();
           Maticsoft.Model.dt_product progift = new Maticsoft.Model.dt_product();
           Maticsoft.BLL.dt_product bll = new Maticsoft.BLL.dt_product();
           progift.product_id = int.Parse(proArr[0].ToString());
           progift = bll.GetModel(progift.product_id);
           dr["proName"] = progift.product_name;
           dr["proId"] = proArr[0].ToString();
           dr["ProNo"] = proArr[2].ToString();
           dr["proNum"] = proArr[1].ToString();
           dr["isCx"] = proArr[2].ToString();       //dr["youhui"] = proArr[4].ToString();
           dr["proItPrice"] = float.Parse(proArr[3].ToString()).ToString();
           dr["product_dh"] = float.Parse(proArr[3].ToString()).ToString();
           dr["proSize"] = "非定制酒水";
           dr["score"] = float.Parse(dr["proItPrice"].ToString()) * int.Parse(dr["proNum"].ToString());
           dr["proAmount"] = ((int.Parse(proArr[1].ToString())) * (float.Parse(proArr[3].ToString()))).ToString("0.00");
           amountPrice += float.Parse(dr["proAmount"].ToString());
           // amountScore += int.Parse(dr["score"].ToString());
           dr["img"] = "../" + progift.product_pic;
           dr["proType"] = 1;
           dr["proCate"] = 1;
           dr["colorCate"] = 1;
           dr["userId"] = "0";
           dr["index"] = i;
           dt.Rows.Add(dr);
          }
          else if (proArr[2].ToString() == "4")
          {
           DataRow dr = dt.NewRow();
           Maticsoft.Model.dt_product progift = new Maticsoft.Model.dt_product();
           Maticsoft.BLL.dt_product bll = new Maticsoft.BLL.dt_product();
           progift.product_id = int.Parse(proArr[0].ToString());
           progift = bll.GetModel(progift.product_id);
           dr["proName"] = progift.product_name;
           dr["proId"] = proArr[0].ToString();
           dr["ProNo"] = proArr[2].ToString();
           dr["proNum"] = proArr[1].ToString();
           dr["isCx"] = proArr[2].ToString();       //dr["youhui"] = proArr[4].ToString();
           dr["proItPrice"] = float.Parse(proArr[3].ToString()).ToString();
           dr["product_dh"] = float.Parse(proArr[3].ToString()).ToString();
           dr["proSize"] = "包装商品";
           dr["score"] = float.Parse(dr["proItPrice"].ToString()) * int.Parse(dr["proNum"].ToString());
           dr["proAmount"] = ((int.Parse(proArr[1].ToString())) * (float.Parse(proArr[3].ToString()))).ToString("0.00");
           amountPrice += float.Parse(dr["proAmount"].ToString());
           // amountScore += int.Parse(dr["score"].ToString());
           dr["img"] = "../" + progift.product_pic;
           dr["proType"] = 1;
           dr["proCate"] = 1;
           dr["colorCate"] = 1;
           dr["userId"] = "0";
           dr["index"] = i;
           dt.Rows.Add(dr);
          }
        }
        HttpCookie myCookie = new HttpCookie("totalMoney");
        myCookie.Value = amountPrice.ToString();
        myCookie.Expires.AddMonths(1);
        HttpContext.Current.Response.Cookies.Add(myCookie);
        this.dlProList.DataSource = dt;
        this.dlProList.DataBind();
        this.price += float.Parse(amountPrice.ToString("0.00"));
        this.score += int.Parse(amountScore.ToString());
       }
      }  #endregion
     }
      

  4.   

    现在就是要解决不刷新就正常显示购物车啊,需要刷新不正常啊
    网站地址购物车http://ballwest.com/order/Send.aspx?typeUrl=2
      

  5.   

    问题在这段  if (Request.Cookies["Order1"] != null && Request.Cookies["Order1"].ToString() != "")
      {
       string cookiesValue = Request.Cookies["Order1"].Value.ToString();
       //解码
       cookiesValue = HttpUtility.UrlDecode(cookiesValue);但不知道原因
      

  6.   

    不是嫌分太少了....
    是你cookie读不出值来,那你就单步运行,好好看看,写入是否正常,那么就检查哪里的问题。