⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checkout.aspx.cs

📁 ASP.NET2.0(C#篇)经典教程的源码...本源码很好的实现了购物车....编码规范和类的设计具有很好的借鉴性!
💻 CS
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.UI.WebControls;
using Wrox.Commerce;
using System.Web.Security;

partial class Checkout : System.Web.UI.Page
{
  void Page_Load( object sender,  System.EventArgs e)
  {
    if (!Page.IsPostBack)
    {
      if (Profile.Cart == null)
      {
        NoCartlabel.Visible = true;
        Wizard1.Visible = false;
      }

      if ( User.Identity.IsAuthenticated )
          Wizard1.ActiveStepIndex = 1;
      else
          Wizard1.ActiveStepIndex = 0;
    }
  }

    protected void chkUseProfileAddress_CheckedChanged( object sender,  System.EventArgs e)
    {
        // fill the delivery address from the profile, but only if it's empty
        // we don't want to overwrite the values
        if (chkUseProfileAddress.Checked && (txtName.Text.Trim() == ""))
        {
            txtName.Text = Profile.Name;
            txtAddress.Text = Profile.Address;
            txtCity.Text = Profile.City;
            txtCounty.Text = Profile.County;
            txtPostCode.Text = Profile.PostCode;
            txtCountry.Text = Profile.Country;
        }

    }

  protected void Wizard1_FinishButtonClick( object sender,  System.Web.UI.WebControls.WizardNavigationEventArgs e)
  {
    // Insert the order and order lines into the database
    SqlConnection conn = null;
    SqlTransaction trans = null;
    SqlCommand cmd;

    try
    {
      conn = new SqlConnection(ConfigurationManager.ConnectionStrings["WroxUnited"].ConnectionString);
      conn.Open();

      trans = conn.BeginTransaction();

      cmd = new SqlCommand();
      cmd.Connection = conn;
      cmd.Transaction = trans;

      // set the order details
      cmd.CommandText = "INSERT INTO Orders(MemberName, OrderDate, Name, Address, County, PostCode, Country, SubTotal, Discount, Total) " +                             "VALUES (@MemberName, @OrderDate, @Name, @Address, @County, @PostCode, @Country, @SubTotal, @Discount, @Total)";
      cmd.Parameters.Add("@MemberName", SqlDbType.VarChar, 50);
      cmd.Parameters.Add("@OrderDate", SqlDbType.DateTime);
      cmd.Parameters.Add("@Name", SqlDbType.VarChar, 50);
      cmd.Parameters.Add("@Address", SqlDbType.VarChar, 255);
      cmd.Parameters.Add("@County", SqlDbType.VarChar, 50);
      cmd.Parameters.Add("@PostCode", SqlDbType.VarChar, 15);
      cmd.Parameters.Add("@Country", SqlDbType.VarChar, 50);
      cmd.Parameters.Add("@SubTotal", SqlDbType.Money);
      cmd.Parameters.Add("@Discount", SqlDbType.Money);
      cmd.Parameters.Add("@Total", SqlDbType.Money);

      cmd.Parameters["@MemberName"].Value = User.Identity.Name;
      cmd.Parameters["@OrderDate"].Value = DateTime.Now;
      cmd.Parameters["@Name"].Value = ((TextBox)Wizard1.FindControl("txtName")).Text;
      cmd.Parameters["@Address"].Value = ((TextBox)Wizard1.FindControl("txtAddress")).Text;
      cmd.Parameters["@County"].Value = ((TextBox)Wizard1.FindControl("txtCounty")).Text;
      cmd.Parameters["@PostCode"].Value = ((TextBox)Wizard1.FindControl("txtPostCode")).Text;
      cmd.Parameters["@Country"].Value = ((TextBox)Wizard1.FindControl("txtCountry")).Text;
      cmd.Parameters["@SubTotal"].Value = Profile.Cart.SubTotal;
      cmd.Parameters["@Discount"].Value = Profile.Cart.MemberDiscount;
      cmd.Parameters["@Total"].Value = Profile.Cart.Total;

      int OrderID = Convert.ToInt32(cmd.ExecuteScalar());

      // change the query and parameters for the order lines
      cmd.CommandText = "INSERT INTO OrderLines(OrderID, ProductID, Quantity, Price) " +
        "VALUES (@OrderID, @ProductID, @Quantity, @Price)";
      cmd.Parameters.Clear();
      cmd.Parameters.Add("@OrderID", SqlDbType.Int);
      cmd.Parameters.Add("@ProductID", SqlDbType.Int);
      cmd.Parameters.Add("@Quantity", SqlDbType.Int);
      cmd.Parameters.Add("@Price", SqlDbType.Money);

      cmd.Parameters["@OrderID"].Value = OrderID;
      foreach (CartItem item in Profile.Cart.Items)
      {
          cmd.Parameters["@ProductID"].Value = item.ProductID;
          cmd.Parameters["@Quantity"].Value = item.Quantity;
          cmd.Parameters["@Price"].Value = item.Price;

          cmd.ExecuteNonQuery();
      }

      // commit the transaction
      trans.Commit();

    }
    catch (SqlException SqlEx)
    {
      // some form of error - rollback the transaction 
      // and rethrow the exception
      if (trans != null)
          trans.Rollback();

      CreateOrderErrorLabel.Visible = true;

      // Log the exception
      // Tools.log("An error occurred while creating the order", SqlEx)
      throw new Exception("An error occurred while creating the order", SqlEx);
    }
    finally
    {
      if (conn != null)
        conn.Close();
    }

    // we will only reach here if the order has been created sucessfully
    // so clear the cart
    Profile.Cart.Items.Clear();
  }

  protected void Wizard1_NextButtonClick( object sender,  System.Web.UI.WebControls.WizardNavigationEventArgs e)
  {
    if (e.CurrentStepIndex == 0)
    {
      System.Web.UI.WebControls.Login l = (Login)Wizard1.FindControl("Login1");

      if (Membership.ValidateUser(l.UserName, l.Password))
      {
          FormsAuthentication.SetAuthCookie(l.UserName, l.RememberMeSet);
          e.Cancel = false;
      } 
      else
      {
        l.InstructionText = "Your login attempt was not successful. Please try again.";
        l.InstructionTextStyle.ForeColor = System.Drawing.Color.Red;

        e.Cancel = true;
      }
    }
    else
    {
      if (!User.Identity.IsAuthenticated)
      {
        e.Cancel = true;
        Wizard1.ActiveStepIndex = 0;
      }
    }
  }

  protected void Wizard1_ActiveStepChanged( object sender,  System.EventArgs e)
  {
    if (!User.Identity.IsAuthenticated)
        Wizard1.ActiveStepIndex = 0;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -