<%@ Page Language="c#" Debug="true" Trace="true" Inherits="myshop.shoppingcart" Src="shoppingcart.aspx.cs" %>
<%@ import Namespace="System.Web.Security" %>
<%@ import Namespace="System.Data.OleDb" %>
<html>
<head>
    <title>shoppingcart</title>
</head>
<body>
    <form runat="server">
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <link href="mycss.css" type="text/css" rel="stylesheet" />
    <meta content="JavaScript" name="vs_defaultClientScript" />
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema" />
    <center>
        <form id="Form1" runat="server">
            <table cellspacing="0" cellpadding="0" width="500" border="0">
                <tbody>
                    <tr>
                        <td>
                            <ASP:DataGrid id="ShoppingCartDlt" runat="server" MaintainState="true" AutoGenerateColumns="false" HeaderStyle-BackColor="#cecfd6" Font-Size="8pt" Font-Name="Verdana" CellSpacing="0" CellPadding="3" ShowFooter="false" BorderColor="black" BackColor="white" Width="500">
                                <Columns>
                                    <asp:TemplateColumn HeaderText="删除">
                                        <ItemTemplate>
                                            <center>
                                                <asp:CheckBox id="chkProductID" runat="server" />
                                            </center>
                                        </ItemTemplate>
                                    </asp:TemplateColumn>
                                    <asp:BoundColumn DataField="ProdID" HeaderText="ID" />
                                    <asp:BoundColumn DataField="ProName" HeaderText="商品名称" />
                                    <asp:BoundColumn DataField="UnitPrice" HeaderText="单价" />
                                    <asp:TemplateColumn HeaderText="数量">
                                        <ItemTemplate>
                                            <asp:TextBox id="CountTb" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"ProdCount")%>'></asp:TextBox>
                                        </ItemTemplate>
                                    </asp:TemplateColumn>
                                    <asp:BoundColumn DataField="TotalPrice" HeaderText="小计(元)" />
                                </Columns>
                            </ASP:DataGrid>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <table cellspacing="0" cellpadding="0" width="500" border="0">
                <tbody>
                    <tr>
                        <td>
                            <asp:Button id="update" runat="server" CssClass="button2" Text="更新我的购物车"></asp:Button>
                        </td>
                        <td>
                            <asp:Button id="CheckOut" runat="server" CssClass="button5" Text="结算"></asp:Button>
                            &nbsp;&nbsp;<input class="button2" onclick="window.close();return false;" type="button" value="继续购物" name="close2" /></td>
                        <td align="right">
                            <br />
                            <asp:Label id="label" runat="server" visible="True" forecolor="#FF8080" height="18px" width="100px"></asp:Label></td>
                    </tr>
                </tbody>
            </table>
        </form>
    </center>
    </form>
</body>
</html>
以上是HTML的

解决方案 »

  1.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Web.SessionState;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.OleDb;
    using System.Configuration;namespace myshop
    {
     /// <summary>
     /// shoppingcart 的摘要说明。
     /// </summary>
     public class shoppingcart : System.Web.UI.Page
     {
      protected System.Web.UI.WebControls.DataGrid ShoppingCartDlt;
      protected System.Web.UI.WebControls.Button update;
      protected System.Web.UI.WebControls.Button CheckOut;
      protected System.Web.UI.HtmlControls.HtmlForm Form1;
      protected System.Web.UI.WebControls.Label label;
      protected System.Web.UI.WebControls.CheckBox     chkProductID;
      protected System.Web.UI.WebControls.TextBox      txtCount;
      protected System.Web.UI.WebControls.TextBox      CountTb;
      string AddProID;  private void Page_Load(object sender, System.EventArgs e)
      {
     // try
      // {  /*  if(Session["logon"]!="yes"||Session["Nname"]=="")
        //if (Session["logon"]!="yes"||Session["Nname"]==null)
        {
          Response.Redirect("login.aspx") ;
        }*/
      // }
     //  catch
      // {
      ///   Response.Redirect("login.aspx") ;
     //  }                                      /////////////查看用户是否已经登陆。   if(!IsPostBack)
       {
        if(Request.Params["mode"]=="view")         //检测是否为直接查看购物车。
        {
         ViewShoppingCart();
         Caculator();
        }
        if(Request.Params["productID"]!=null||Request.Params["productID"]!="")
        {
         AddProID=Request["productID"];
         UpdateShoppingCart();
         Caculator();
        }
       }// 在此处放置用户代码以初始化页面
      }  public void CreateCartTable()   //创建购物车
      {
       DataSet ds = new DataSet();
       DataTable newDT=new DataTable("CartTable");
       ds.Tables.Add(newDT);
       DataColumn newDC;   newDC=new DataColumn("ProdID",System.Type.GetType("System.Int32"));
       ds.Tables["CartTable"].Columns.Add(newDC);   newDC=new DataColumn("ProdCount",System.Type.GetType("System.Int32"));
       newDC.DefaultValue=1;
       ds.Tables["CartTable"].Columns.Add(newDC);   newDC=new DataColumn("ProName",System.Type.GetType("System.String"));
       ds.Tables["CartTable"].Columns.Add(newDC);   newDC=new DataColumn("UnitPrice",System.Type.GetType("System.Double"));
       ds.Tables["CartTable"].Columns.Add(newDC);   newDC=new DataColumn("TotalPrice",System.Type.GetType("System.Double"));
       ds.Tables["CartTable"].Columns.Add(newDC);   newDC=new DataColumn("IsDeleted",System.Type.GetType("System.Int32"));
       newDC.DefaultValue=0;                                                    //  public void WriteShoppingCart() 中 newDR[5]="0"; 行,已被注销,
       ds.Tables["CartTable"].Columns.Add(newDC);   Session["myCartTable"]=newDT;
       ShoppingCartDlt.DataSource=ds.Tables["CartTable"].DefaultView;
       ShoppingCartDlt.DataBind();  }  public void UpdateShoppingCart()
      {
       if(Session["myCartTable"]==null)//Session["myCartTable"]==null
       {
        CreateCartTable();                                    //调用函数CreateCartTable()新建一个DataTable
        WriteShoppingCart();
       }
       else
       {                                                         //如果购物蓝中已有商品,则需要对购物信息表DataTable进行更新,并将其棒定到ShoppingCartDlt    WriteShoppingCart();
       }
      }  public void ViewShoppingCart()                               //查看购物车
      {
       if(Session["myCartTable"]!=null)
       {
        DataTable viewTable=new DataTable("nowCartTable");
        viewTable=(DataTable)Session["myCartTable"];
        ShoppingCartDlt.DataSource = viewTable.DefaultView;         //购物车棒定到ShoppingCartDlt
        ShoppingCartDlt.DataBind();
       }  }
      

  2.   

    public void WriteShoppingCart()
      {
       if(Request.Params["mode"]!="view")                             //检查是否是直接查看购物车,如果直接查看,就不再写MYCARTTABLE
       {
        DataTable nowTable=new DataTable("nowCartTable");
        nowTable=(DataTable)Session["myCartTable"];
        int pn=nowTable.Rows.Count;    int i=0;
        bool hasone=false;
        int nowProdID;    while(i<pn && !hasone)
        {
         nowProdID=Int32.Parse(nowTable.Rows[i][0].ToString());
         if(nowProdID==Int32.Parse(AddProID))                                   //判断购物信息表中,是否存有当前放入商品。 if(nowProdID==Int32.Parse(AddProID))
         {
          hasone=true;
         }
         else
         {
          i++;
         }    }
        if(hasone)
        {                                                      //如果已有该商品,则 hasone=true,更改该数据行
         DataRow oldDR;
         oldDR=nowTable.Rows[i];
         oldDR["ProdCount"]=Int32.Parse(oldDR["ProdCount"].ToString())+1;
         oldDR["TotalPrice"]=Int32.Parse(oldDR["ProdCount"].ToString())*Double.Parse(oldDR["UnitPrice"].ToString());
        }
        else
        {                                                      //如果没有该商品,在表中新加如一行。
         DataRow newDR;
         double unitp;   //  String strcon="provider=Microsoft.jet.OLEDB.4.0;data Source="+Server.MapPath(ConfigurationSettings.AppSettings["MDBpath2"])+";";     string connectionString = ConfigurationSettings.AppSettings["connectionString"]+Server.MapPath(ConfigurationSettings.AppSettings["con"]);
         OleDbConnection myConnection = new OleDbConnection(connectionString);
         string strSQL= "select *  from pro where  product_id = +AddProID";     OleDbDataAdapter myCommand = new  OleDbDataAdapter(strSQL, myConnection);
         DataSet ds = new DataSet();
         myCommand.Fill(ds, "AddP");     newDR=nowTable.NewRow();
         newDR[0]=AddProID;     newDR[2]=ds.Tables["Addp"].Rows[0]["product_name"].ToString();
         unitp=Double.Parse(ds.Tables["AddP"].Rows[0]["product_memprice"].ToString());        //会员价     newDR[3]=unitp;
         newDR[4]=unitp;                                           //第一次读库,所以总价格和单价是一样的。
         //newDR[5]="0";
         nowTable.Rows.Add(newDR);     myConnection.Close();    }    ShoppingCartDlt.DataSource = nowTable.DefaultView;         //将更新后的 DataTable棒定到ShoppingCartDlt
        ShoppingCartDlt.DataBind();    Session["myCartTable"] = nowTable;
        //重新保存更新过的DataTable
       }
      }  public void Caculator()
      {
       if(Session["myCartTable"]!=null)                         //购物车是否为空
       {
        int h;
        Double TotalPri;
        TotalPri=0;
        DataTable nowTable3=new DataTable("nowCartTable3");
        nowTable3=(DataTable)Session["myCartTable"];
        if(nowTable3.Rows.Count>0)                               //返回购物车中是否有货物
        {
         for(h=0;h<=nowTable3.Rows.Count-1;h++)
         {
          TotalPri=TotalPri+Int32.Parse(nowTable3.Rows[h][4].ToString());//Double.Parse((string)TotalText.Text);     }
         label.Text="总计: "+TotalPri.ToString()+" 元" ;
        }
       }  }  public void Update()
      {   int i;
       int j;
       int k;
       ArrayList deleteItem = new ArrayList(10);
       DataGridItem _item ;
       j=0;
       int deleteid;
       k=0;
       DataTable nowTable2=new DataTable("nowCartTable2");
       nowTable2=(DataTable)Session["myCartTable"];   for(i=0;i<=this.ShoppingCartDlt.Items.Count-1;i++)
       {
        _item = this.ShoppingCartDlt.Items[i];
        TextBox CountText=(TextBox)this.ShoppingCartDlt.Items[i].Cells[4].FindControl("CountTb");//Controls[1];//_item.FindControl("CountTb");
        CheckBox ProductIDCheck =(CheckBox) _item.FindControl("chkProductID");    nowTable2.Rows[i][1] = Int32.Parse(CountText.Text.ToString());
        nowTable2.Rows[i][4] = Int32.Parse(nowTable2.Rows[i][1].ToString()) * Double.Parse(nowTable2.Rows[i][3].ToString());    if(ProductIDCheck.Checked)
        {
         nowTable2.Rows[i][5] = 1;//添加删除标记1
         j=j+1;
        }   }
       string strExpr="IsDeleted>0";                     //http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemDataDataTableClassSelectTopic.asp
       DataRow[] foundRows = nowTable2.Select(strExpr);
       for(int m = 0; m < foundRows.Length; m ++)
       {
        //Console.WriteLine(foundRows[i][0]);
        foundRows[m].Delete();
       }   ShoppingCartDlt.DataSource = nowTable2.DefaultView;
       ShoppingCartDlt.DataBind();
       Session["myCartTable"] = nowTable2;
       Caculator();  }  #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }  /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {
       this.update.Click += new System.EventHandler(this.update_Click);
       this.CheckOut.Click += new System.EventHandler(this.CheckOut_Click);
       this.Load += new System.EventHandler(this.Page_Load);  }
      #endregion  private void update_Click(object sender, System.EventArgs e)
      {
       Update();  }  private void CheckOut_Click(object sender, System.EventArgs e)
      {
       Update();
       Response.Redirect("checkout.aspx");
      }
     }
    }
      

  3.   

    哪位有更好的代码就帖出来啊![email protected]
      

  4.   

    我这有一个简单的实例可供你参考!
    文件已发送到你的e-mail;
      

  5.   

    购物车的例子:
    参考  petshop