Cart.aspx

来源:互联网 发布:手机淘宝添加收货地址 编辑:程序博客网 时间:2024/05/17 23:18

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 MyBookShop.BLL;
using MyBookShop.Models;

public partial class Cart : System.Web.UI.Page
{
    User user;
    protected void Page_Load(object sender, EventArgs e)
    {
        user = Session["CurrentUser"] as User;       
        if (user == null)
        {
            Response.Write("<script>alert('登陆超时,请重新登陆');document.location='MemberShip/UserLogin.aspx';</script>");
            return;
        }
       
        if (!IsPostBack)
        {
            if (Session["Cart"] != null)
            {
                BindGridView();
            }
        }
    }

    /// <summary>
    /// 结算
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void imgb_Salary_Click(object sender, ImageClickEventArgs e)
    {
        if (Session["Cart"] == null || ((DataTable)Session["Cart"]).Rows.Count==0)
        {
            Response.Write("<script>alert('您的购物车为空,请先将图书放入购物车!');document.location='BookList.aspx';</script>");
            return;
        }
        Order order = new Order();
        order.OrderDate = DateTime.Now;
        if (this.ltrSalary.Text != String.Empty)
        {
            order.TotalPrice = Convert.ToDecimal(this.ltrSalary.Text);
        }
        order.User = user;
        order = OrderManager.AddOrder(order);       
        OrderBook orderbook=new OrderBook();
        Book book = new Book();
        Order orders = new Order();
        foreach (DataRow dr in ((DataTable)Session["Cart"]).Rows)
        {
            book.Id = Convert.ToInt32(dr["BookId"]);
            orders.Id = order.Id;
            orderbook.Book = book;
            orderbook.Order = orders;
            orderbook.Quantity = Convert.ToInt32(dr["Number"]);
            orderbook.UnitPrice = Convert.ToDecimal(dr["UnitPrice"]);

            OrderBookManager.AddOrderBook(orderbook);
        }
        Session.Remove("Cart");
        Response.Write("<script>alert('结算成功,请等待审批订单');window.location='BookList.aspx'</script>");
    }

    /// <summary>
    /// 绑定GridView方法
    /// </summary>
    private void BindGridView()
    {
        DataTable cart = Session["cart"] as DataTable;
        TotalPrice(cart);
        this.gvCart.DataSource=cart;
        this.gvCart.DataBind();
    }

    /// <summary>
    /// 为前台图片找到正确的路径
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    public string GetUrl(string url)
    {
        return StringHandler.CoverUrl(url);
    }

    /// <summary>
    /// GridView编辑按钮处理事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void gvCart_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gvCart.EditIndex=e.NewEditIndex;
        BindGridView();
    }

    /// <summary>
    /// GridView分页处理事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void gvCart_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvCart.PageIndex = e.NewPageIndex;
        BindGridView();
    }

    /// <summary>
    /// GridView删除按钮处理事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void gvCart_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        DataTable cart = Session["cart"] as DataTable;
        cart.Rows[e.RowIndex].Delete();
        Session["cart"] = cart;
        BindGridView();
    }

    /// <summary>
    /// GridView取消按钮处理事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void gvCart_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        gvCart.EditIndex = -1;
        BindGridView();
    }

    /// <summary>
    /// GridView更新按钮处理事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void gvCart_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        DataTable cart = Session["cart"] as DataTable;
        foreach (DataRow dr in cart.Rows)
        {
            if (dr["BookName"].ToString().Equals((gvCart.Rows[e.RowIndex].FindControl("lblBookName") as Label).Text))
            {
                dr["Number"] = (gvCart.Rows[e.RowIndex].FindControl("txtNumber") as TextBox).Text.Trim();
            }
        }
        
        Session["cart"] = cart;
        gvCart.EditIndex = -1; 
        BindGridView();
    }

    /// <summary>
    /// GridView数据绑定后激发的事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void gvCart_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton lb= e.Row.FindControl("lnkbtnDelete") as LinkButton;
            lb.Attributes.Add("onclick","return confirm('确定删除吗?')");
        }
    }

    /// <summary>
    /// 计算总价
    /// </summary>
    /// <param name="cart"></param>
    private void TotalPrice(DataTable cart)
    {
        double Total = 0;
        foreach (DataRow dr in cart.Rows)
        {
            Total += Convert.ToDouble(dr["UnitPrice"].ToString()) * Convert.ToDouble(dr["Number"].ToString());
            this.ltrSalary.Text = Total.ToString();
        }
    }

    /// <summary>
    /// 把cart中所有商品全部写入test表
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnInsertToTest_Click(object sender, EventArgs e)
    {
        DataTable cart = Session["Cart"] as DataTable;
        foreach (DataRow dr in cart.Rows)
        {
            string id = dr["BookId"].ToString();
            string bookName = dr["BookName"].ToString();
            int count = Convert.ToInt32(dr["Number"].ToString());
            float price = float.Parse(dr["UnitPrice"].ToString());
            string imgUrl = dr["ImageUrl"].ToString();
            float total = count * price;
            string strsql = string.Format(@"INSERT INTO [ERP_DB].[dbo].[test]
                                           ([BookId]
                                           ,[BookName]
                                           ,[Number]
                                           ,[UnitPrice]
                                           ,[ImageUrl]
                                           ,[total])
                                     VALUES
                                           ('{0}'
                                           ,'{1}'
                                           ,{2}
                                           ,{3}
                                           ,'{4}'
                                           ,{5})",id,bookName,count,price,imgUrl,total);
            if (new MyBookShop.BLL.AddGoodsManager().AddGoodsFromCart(strsql))
            {
                Response.Write("插入成功");
            }
            else
            {
                Response.Write("插入失败!!!!!!!!!!");
            }
        }
    }
}