ASP.NET购物车实现过程详解

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Web;

  using System.Web.UI;

  using System.Web.UI.WebControls;

  using System.Collections;

  using System.Data;

  using System.Data.SqlClient;

  public partial class shopcart : System.Web.UI.Page

  {

  Hashtable ht;

  DataTable dt;

  string connstr = "Data Source=.SQLEXPRESS;AttachDbFilename=F:

   est.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

  SqlConnection conn;

  SqlCommand cmd;

  SqlDataReader sdr;

  protected void Page_Load(object sender, EventArgs e)

  {

  dt = new DataTable();

  DataColumn col = new DataColumn();

  col.ColumnName = "id";

  col.DataType = System.Type.GetType("System.String");

  dt.Columns.Add(col);

  col = new DataColumn();

  col.ColumnName = "name";

  col.DataType = System.Type.GetType("System.String");

  dt.Columns.Add(col);

  col = new DataColumn();

  col.ColumnName = "Num";

  col.DataType = System.Type.GetType("System.Int32");

  dt.Columns.Add(col);

  col = new DataColumn();

  col.ColumnName = "price";

  col.DataType = System.Type.GetType("System.Single");

  dt.Columns.Add(col);

  col = new DataColumn();

  col.ColumnName = "Total";

  col.DataType = System.Type.GetType("System.Single");

  dt.Columns.Add(col);

  if (!IsPostBack)

  {

  Bind();

  }

  }

  public void Bind()

  {

  if (Session["shopcar"] == null)

  {

  Response.Write("");

  }

  else

  {

  ht = (Hashtable)Session["shopcar"];

  foreach (object item in ht.Keys)

  {

  string id = item.ToString();

  int num = int.Parse((ht[item].ToString()));

  string sql = "select book_name,price from book_info where book_id='" + id + "'";

  conn = new SqlConnection(connstr);

  cmd = new SqlCommand(sql, conn);

  conn.Open();

  sdr = cmd.ExecuteReader();

  if (sdr.HasRows)

  {

  sdr.Read();

  DataRow row = dt.NewRow();

  row["id"] = id;

  row["Num"] = num;

  row["name"] = sdr.GetString(0);

  row["price"] = float.Parse(sdr[1].ToString());

  row["total"] = num * (float.Parse(sdr[1].ToString()));

  dt.Rows.Add(row);

  }

  sdr.Close();

  conn.Close();

  }

  }

  GridView1.DataSource = dt.DefaultView;

  GridView1.DataBind();

  }

  protected void textbox1_TextChanged(object sender, EventArgs e)

  {

  Hashtable ht = (Hashtable)Session["shopcar"];

  if (ht == null) return;

  for (int i = 0; i < GridView1.Rows.Count; i++)

  {

  string id = GridView1.Rows[i].Cells[0].Text.ToString();

  Response.Write(id);

  string num = ((TextBox)GridView1.Rows[i].FindControl("textbox1")).Text;

  Response.Write(" " + num + "
");

  ht[id] = num;

  }

  Session["shopcar"] = ht;

  Bind();

  }

  protected void button1_Click(object sender, EventArgs e)

  {

  string id = ((Button)sender).CommandArgument;

  Hashtable ht = (Hashtable)Session["shopcar"];

  if (ht == null) return;

  ht.Remove(id);

  Bind();

  }

  }