jeremyyang824,给了我一段很精简的购物车操作类的代码:
就两个页面:一个公共操作类:
default.aspx 首页显示产品信息
shopcart.aspx 购物车处理信息
App_code/shopcart.cs 购物车操作类
我把全部代码都贴出来。//*********************************************************default.aspx(代码):
需向shopcart.aspx传送(productid(产品ID号)/productname(产品名称)
/memberprice(产品价格)/quantity(产品数量)/imageurl(产品图片的路径)共五个参数)<a href="shopcart.aspx?productid=1000&productname=数码相机memberprice=2000&quantity=1&imageurl=pic1.img">数码相机加入购物车</a><br /><br />
<a href="shopcart.aspx?productid=1001&productname=摄相机memberprice=3000&quantity=1&imageurl=pic2.img">摄相机加入购物车</a><br /><br />
<a href="shopcart.aspx">查看购物车</a>//*********************************************************shopcart.aspx.cs(代码):
public partial class shopcart : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int productid = int.Parse(Request.QueryString["productid"]);
string productname = Request.QueryString["productname"];
decimal memberprice = Convert.ToDecimal(Request.QueryString["memberprice"]);
int quantity = int.Parse(Request.QueryString["quantity"]);
string imageurl = Request.QueryString["imageurl"];
}
public void Buy(int productid, string productname, decimal memberprice, int quantity, string imageurl)
{
//若购物车不存在则新建
if (Session["cart"] == null)
{
Session["cart"] = new ShoppingCart();
} ShoppingCart cart = (ShoppingCart)Session["cart"];
cart.Insert(productid, productname, memberprice, quantity, imageurl);
}
}//*********************************************************App_code目录下的shopcart.cs(代码):using System;
using System.Data;
using System.Configuration;
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 System.Collections;
using System.Collections.Generic;/// <summary>
/// 购物车中的项
/// </summary>
[Serializable]
public class CartItem
{
private int _productid;
private string _productname;
private string _imageurl;
private int _quantity;
private decimal _memberprice;
private decimal _lineTotal; public int productid
{
get { return _productid; }
set { _productid = value; }
}
public string productname
{
get { return _productname; }
set { _productname = value; }
}
public string imageurl
{
get { return _imageurl; }
set { _imageurl = value; }
}
public int quantity
{
get { return _quantity; }
set { _quantity = value; }
}
public decimal memberprice
{
get { return _memberprice; }
set { _memberprice = value; }
}
public decimal LineTotal //单项总价(只读)
{
get { return _quantity * _memberprice; }
} public void New(int productid, string productname,int quantity, decimal memberprice, string imageurl)
{
_productid = productid;
_productname = productname;
_imageurl =imageurl;
_quantity = quantity;
_memberprice = memberprice;
_lineTotal = quantity * memberprice;
}
}/// <summary>
/// 购物车
/// </summary>
[Serializable]
public class ShoppingCart
{
private DateTime _dateCreated;
private DateTime _lastUpdate;
private List<CartItem> _items; public List<CartItem> Items
{
get { return _items; }
set { _items = value; }
}
public decimal Total //总价(只读)
{
get
{
decimal t = 0;
if (_items == null)
{
return 0;
}
foreach (CartItem item in _items)
{
t += item.LineTotal;
}
return t;
}
} public ShoppingCart()
{
if (this._items == null)
{
this._items = new List<CartItem>();
this._dateCreated = DateTime.Now;
}
} public void Insert(int productid, string productname, decimal memberprice, int quantity, string imageurl)
{
int itemIndex = ItemIndexOfID(productid);
if (itemIndex == -1) //购物车中还未存在此产品,新实例化一个CartItem并加入购物车中
{
CartItem newItem = new CartItem();
newItem.productid = productid;
newItem.productname = productname;
newItem.quantity = quantity;
newItem.memberprice = memberprice;
newItem.imageurl = imageurl; _items.Add(newItem);
}
else //购物车中存在此产品,只需增加此商品的数量
{
_items[itemIndex].quantity += 1;
}
_lastUpdate = DateTime.Now;
}
public void Update(int rowID, int quantity)
{
CartItem item = _items[rowID];
item.quantity = quantity;
_lastUpdate = DateTime.Now;
}
public void DeleteItem(int rowID)
{
_items.RemoveAt(rowID);
_lastUpdate = DateTime.Now;
} public void ShowItem()
{
foreach (CartItem item in _items)
{ }
}
//搜索购物车中是否存在某商品,若存在则返回在购物车中的索引,不存在则返回-1
private int ItemIndexOfID(int productid)
{
int index = 0;
foreach (CartItem item in _items)
{
if (item.productid == productid)
{
return index;
}
index += 1;
}
return -1;
}
}现在有一个问题,就是当点击购买后,要显示购物车中所有session的产品信息,并且数量那一项是要可以修改的。
希望jeremyyang824可以再来一下!
刚接触.net,好多都不懂,希望大家帮忙指点一下。
我同时也将代码打包放在这上面,请大家下载一下,帮忙指点一下,谢谢。
http://www.gwbattery.com/shopcart.rar
就两个页面:一个公共操作类:
default.aspx 首页显示产品信息
shopcart.aspx 购物车处理信息
App_code/shopcart.cs 购物车操作类
我把全部代码都贴出来。//*********************************************************default.aspx(代码):
需向shopcart.aspx传送(productid(产品ID号)/productname(产品名称)
/memberprice(产品价格)/quantity(产品数量)/imageurl(产品图片的路径)共五个参数)<a href="shopcart.aspx?productid=1000&productname=数码相机memberprice=2000&quantity=1&imageurl=pic1.img">数码相机加入购物车</a><br /><br />
<a href="shopcart.aspx?productid=1001&productname=摄相机memberprice=3000&quantity=1&imageurl=pic2.img">摄相机加入购物车</a><br /><br />
<a href="shopcart.aspx">查看购物车</a>//*********************************************************shopcart.aspx.cs(代码):
public partial class shopcart : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int productid = int.Parse(Request.QueryString["productid"]);
string productname = Request.QueryString["productname"];
decimal memberprice = Convert.ToDecimal(Request.QueryString["memberprice"]);
int quantity = int.Parse(Request.QueryString["quantity"]);
string imageurl = Request.QueryString["imageurl"];
}
public void Buy(int productid, string productname, decimal memberprice, int quantity, string imageurl)
{
//若购物车不存在则新建
if (Session["cart"] == null)
{
Session["cart"] = new ShoppingCart();
} ShoppingCart cart = (ShoppingCart)Session["cart"];
cart.Insert(productid, productname, memberprice, quantity, imageurl);
}
}//*********************************************************App_code目录下的shopcart.cs(代码):using System;
using System.Data;
using System.Configuration;
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 System.Collections;
using System.Collections.Generic;/// <summary>
/// 购物车中的项
/// </summary>
[Serializable]
public class CartItem
{
private int _productid;
private string _productname;
private string _imageurl;
private int _quantity;
private decimal _memberprice;
private decimal _lineTotal; public int productid
{
get { return _productid; }
set { _productid = value; }
}
public string productname
{
get { return _productname; }
set { _productname = value; }
}
public string imageurl
{
get { return _imageurl; }
set { _imageurl = value; }
}
public int quantity
{
get { return _quantity; }
set { _quantity = value; }
}
public decimal memberprice
{
get { return _memberprice; }
set { _memberprice = value; }
}
public decimal LineTotal //单项总价(只读)
{
get { return _quantity * _memberprice; }
} public void New(int productid, string productname,int quantity, decimal memberprice, string imageurl)
{
_productid = productid;
_productname = productname;
_imageurl =imageurl;
_quantity = quantity;
_memberprice = memberprice;
_lineTotal = quantity * memberprice;
}
}/// <summary>
/// 购物车
/// </summary>
[Serializable]
public class ShoppingCart
{
private DateTime _dateCreated;
private DateTime _lastUpdate;
private List<CartItem> _items; public List<CartItem> Items
{
get { return _items; }
set { _items = value; }
}
public decimal Total //总价(只读)
{
get
{
decimal t = 0;
if (_items == null)
{
return 0;
}
foreach (CartItem item in _items)
{
t += item.LineTotal;
}
return t;
}
} public ShoppingCart()
{
if (this._items == null)
{
this._items = new List<CartItem>();
this._dateCreated = DateTime.Now;
}
} public void Insert(int productid, string productname, decimal memberprice, int quantity, string imageurl)
{
int itemIndex = ItemIndexOfID(productid);
if (itemIndex == -1) //购物车中还未存在此产品,新实例化一个CartItem并加入购物车中
{
CartItem newItem = new CartItem();
newItem.productid = productid;
newItem.productname = productname;
newItem.quantity = quantity;
newItem.memberprice = memberprice;
newItem.imageurl = imageurl; _items.Add(newItem);
}
else //购物车中存在此产品,只需增加此商品的数量
{
_items[itemIndex].quantity += 1;
}
_lastUpdate = DateTime.Now;
}
public void Update(int rowID, int quantity)
{
CartItem item = _items[rowID];
item.quantity = quantity;
_lastUpdate = DateTime.Now;
}
public void DeleteItem(int rowID)
{
_items.RemoveAt(rowID);
_lastUpdate = DateTime.Now;
} public void ShowItem()
{
foreach (CartItem item in _items)
{ }
}
//搜索购物车中是否存在某商品,若存在则返回在购物车中的索引,不存在则返回-1
private int ItemIndexOfID(int productid)
{
int index = 0;
foreach (CartItem item in _items)
{
if (item.productid == productid)
{
return index;
}
index += 1;
}
return -1;
}
}现在有一个问题,就是当点击购买后,要显示购物车中所有session的产品信息,并且数量那一项是要可以修改的。
希望jeremyyang824可以再来一下!
刚接触.net,好多都不懂,希望大家帮忙指点一下。
我同时也将代码打包放在这上面,请大家下载一下,帮忙指点一下,谢谢。
http://www.gwbattery.com/shopcart.rar
解决方案 »
- 新手求助加学习
- 求教服务器创建文件夹的问题
- 什么是ASP.NET?
- 有关InStr()函数的问题
- 如何像csdn 在导航和内容之间 放置一个拖动宽度的竖杠
- ==================各位大大,如何获取需要登陆的网站的网页里面的代码=====================
- 为什么可以删除而不能更新
- 关于权限的问题!达人们帮忙解释
- 不能访问 aspx 文件
- 网站中每个页面的标题(即HTML中的title标记)要统一,我不想在每个网页的<title>与</title>填入,怎样通程序来实现(ASP.NET,C#)
- 错误信息: 无法识别的配置节“connectionStrings”
- 在Gridview中实现分页显示?(请教高手,谢谢)
要做完整的购物车系统,牵扯到知识点很多的
有权限管理,profile,匿名用户,在web.config中的配置,很多很多,建议楼主看看wrox的begginging at asp.net2.0里面有专门的章节讨论这个问题.
可以在网上下载电子书.
谢谢。
我上次听一个高手说,他说这个代码是可以了,只要写多一个显示购物车的方法ShowItem就行了。
我就想在这基础上让它显示出来就行了。
sb.Append("<table>");
sb.Append("<tr>");
for(int i=0;i<list.Length;i++)
{
//把图片和信息加入到table里面
}
sb.Append("<table>");
sb.Append("<tr>");
//重写要显示的页面
//页面写个<!--重写标记-->
用string.Replace就可以了
建个物品类 里面包括 GetSumbySessionid
界面给用户填数量的text, 然后货物表里加个字段,专门为了得到用户购买数量
明白,这样?
CartId
UserId
BookId
Amount
这个是表结构 这样做 比我上贴思路要好
/// <summary>
/// 根据参数userId,获取购物篮详细信息
/// </summary>
/// <param name="userId">用户ID</param>
public void LoadData(int userId)
{
Database db=new Database(); //实例化一个Database类 string sql="";
sql="Select * from [Cart] where UserID = "+ userId ; SqlDataReader reader=db.GetDataReader(sql); //利用Database类的GetDataRow方法查询用户数据 //根据查询得到的数据,对成员安全赋值
while(reader.Read())
{
if(this._cartId==0)
{
this._cartId=GetSafeData.ValidateDataReader_N(reader,"CartId");
this._userId=GetSafeData.ValidateDataReader_N(reader,"UserId");
}
this._books.Add(GetSafeData.ValidateDataReader_N(reader,"BookId"));
this._amount.Add(GetSafeData.ValidateDataReader_N(reader,"Amount"));
this._exist=true;
}
if(this._cartId==0)
{
this._exist=false;
}
} /// <summary>
/// 向数据库添加一个购物篮中的一种图书
/// </summary>
/// <param name="topicInfo">购物篮中的一种图书的信息哈希表</param>
public void Add(Hashtable cartInfo)
{
Database db=new Database(); //实例化一个Database类
db.Insert("[Cart]",cartInfo ); //利用Database类的Inser方法,插入数据
} /// <summary>
/// 修改购物篮中的一种图书内容
/// </summary>
/// <param name="newCartInfo">新的购物篮信息哈希表</param>
/// <param name="condition">Update的Where子句</param>
public void Update(Hashtable newCartInfo,int cartId)
{
Database db=new Database();
string condition = "Where CartID = "+cartId.ToString();
db.Update("[Cart]",newCartInfo,condition);
} /// <summary>
/// 删除整个购物篮
/// </summary>
public void Delete()
{
Database db=new Database();
string strSql="Delete From [Cart] Where CartID = "+this._cartId;
db.ExecuteSQL(strSql);
} /// <summary>
/// 删除购物篮种某种图书
/// </summary>
/// <param name="cartId">将要删除购物篮的项目编号</param>
public void RemoveBook(int cartId)
{
Database db=new Database();
string strSql="Delete From [Cart] Where cartId = "+cartId.ToString();
db.ExecuteSQL(strSql);
} /// <summary>
/// 查询userId的购物篮中的信息,并以DataTable返回
/// </summary>
/// <param name="userId">用户编号</param>
/// <returns>购物篮信息DataTable</returns>
public static DataTable Query(int userId)
{
string sql="";
sql="Select * From [Cart],[Book] Where [Cart].UserId = "+userId
+" And [Cart].bookId=[Book].bookId";
Database db=new Database();
return db.GetDataTable(sql);
} #endregion 方法
物品类,好像我上面建过了啊。
重新更新session的办法是 删除原先的session?
然后货物表里加个字段?
更新后还要删除sessio?
货物表又是做什么用的?
糊涂了。
给你个 修改所购物数量 的代码以及类 自己参照着写其他的了<%@ Page language="c#" Inherits="MyBookShop.Web.CartView" CodeFile="CartView.aspx.cs" %>
<%@ Register TagPrefix="MyBookShop" TagName="HeaderMenu" Src="UserControls/HeaderMenu.ascx" %>
<%@ Register TagPrefix="MyBookShop" TagName="UserCheck" Src="UserControls/UserCheck.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>CartView</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<LINK href="Styles/Style.css" type="text/css" rel="stylesheet">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 8px; WIDTH: 504px; POSITION: absolute; TOP: 8px; HEIGHT: 136px"
cellSpacing="0" cellPadding="0" width="504" border="0">
<TR>
<TD align="center"><MYBOOKSHOP:HeaderMenu id="headerMenu" runat="server"></MYBOOKSHOP:HeaderMenu><MYBOOKSHOP:UserCheck id="userCheck1" runat="server"></MYBOOKSHOP:UserCheck></TD>
</TR>
<TR>
<TD>>>购买图书>>我的购物篮</TD>
</TR>
<TR>
<TD vAlign="top" align="center">
<asp:GridView ID="GV" runat="server" AutoGenerateColumns="False" OnRowCancelingEdit="GV_RowCancelingEdit" OnRowCommand="GV_RowCommand" OnRowDeleting="GV_RowDeleting" OnRowEditing="GV_RowEditing" OnRowUpdating="GV_RowUpdating">
<Columns>
<asp:BoundField DataField="CartId" ReadOnly="True" HeaderText="购物篮编号" />
<asp:BoundField DataField="BookName" ReadOnly="True" HeaderText="图书名"/>
<asp:BoundField DataField="Amount" HeaderText="数量"/>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
</TD>
</TR>
<TR>
<TD align="right" bgColor="aqua" style="HEIGHT: 9px"><asp:button id="ButtonBack" runat="server" Text="继续选购" Width="65px" onclick="ButtonBack_Click"></asp:button>
<asp:Button id="ButtonBuy" runat="server" Text="去结算中心" Width="77px" onclick="ButtonBuy_Click"></asp:Button></TD>
</TR>
</TABLE>
</FONT>
</form>
</body>
</HTML>
不过我还是喜欢用session来做购物车。
对了,USERID?
那用户不是要先注册才可以购买了?
还有,每个购物车内的物品都要用写入到数据库去,如果很多人同时登录操作,数据库性能也会下渐很多了。
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;using MyBookShop.BusinessLogicLayer;namespace MyBookShop.Web
{
/// <summary>
/// CartView 的摘要说明。
/// </summary>
public partial class CartView : System.Web.UI.Page
{ /// <summary>
/// 页面加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
InitData();
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
}
#endregion /// <summary>
/// 查询当前用户的购物篮,初始化页面数据
/// </summary>
private void InitData()
{
int userId=0;
if(Session["user_id"]!=null)
userId=Convert.ToInt32(Session["user_id"].ToString());
DataTable dt=Cart.Query(userId);
GV.DataSource=dt;
GV.DataBind();
} /// <summary>
/// 返回按钮的单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ButtonBack_Click(object sender, System.EventArgs e)
{
Response.Redirect("BookList.aspx");
} /// <summary>
/// DataGrid编辑按钮列单击事件
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void DG_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//设置当前修改项的索引
GV.EditIndex= (int)e.Item.ItemIndex;
InitData();
} /// <summary>
/// DataGrid取消按钮列单击事件
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void DG_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//设置修改项的索引为-1,即没有行处于被修改状态
GV.EditIndex = -1;
InitData();
} /// <summary>
/// 去结算中心按钮单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ButtonBuy_Click(object sender, System.EventArgs e)
{
Response.Redirect("Bill.aspx");
} protected void DG_SelectedIndexChanged(object sender, System.EventArgs e)
{
} /// <summary>
/// 按钮单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GV_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument); //待处理的行下标
int cartId = -1;
Cart cart = new Cart(); switch (e.CommandName)
{
//编辑
case "Edit":
GV.EditIndex = index;
break; //修改
case "Update":
cartId = Convert.ToInt32(GV.Rows[index].Cells[0].Text);
Hashtable ht = new Hashtable();
ht.Add("Amount", ((TextBox)GV.Rows[index].Cells[2].Controls[0]).Text.ToString());
cart.Update(ht, cartId);
GV.EditIndex = -1;
break; //取消
case "Cancel":
GV.EditIndex = -1;
break; //删除
case "Delete":
cartId = Convert.ToInt32(GV.Rows[index].Cells[0].Text);
cart.RemoveBook(cartId); //利用Cart的Remove方法,删除某种图书
break;
default:
break;
}
InitData();
} protected void GV_RowEditing(object sender, GridViewEditEventArgs e)
{
} protected void GV_RowUpdating(object sender, GridViewUpdateEventArgs e)
{ }
protected void GV_RowDeleting(object sender, GridViewDeleteEventArgs e)
{ }
protected void GV_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{ }
}
}
那用户不是要先注册才可以购买了?
还有,每个购物车内的物品都要用写入到数据库去,如果很多人同时登录操作,数据库性能也会下渐很多了
若你不想注册的形式 可以随机的为每个ip派送一位id,形式随你,就用sessionid好了
多少人呢??呵呵 并发数是看数据库设置 ,访问快慢看你的机器内存 ,若进一步优化,写个缓存的代码
我是从java过来的 java里有hibernate 估计csharp里也有,objectdatasource就是了
<%@ Page language="c#" Inherits="MyBookShop.Web.CartView" CodeFile="CartView.aspx.cs" %>
<%@ Register TagPrefix="MyBookShop" TagName="HeaderMenu" Src="UserControls/HeaderMenu.ascx" %>
<%@ Register TagPrefix="MyBookShop" TagName="UserCheck" Src="UserControls/UserCheck.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>CartView</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<LINK href="Styles/Style.css" type="text/css" rel="stylesheet">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 8px; WIDTH: 504px; POSITION: absolute; TOP: 8px; HEIGHT: 136px"
cellSpacing="0" cellPadding="0" width="504" border="0">
<TR>
<TD align="center"><MYBOOKSHOP:HeaderMenu id="headerMenu" runat="server"></MYBOOKSHOP:HeaderMenu><MYBOOKSHOP:UserCheck id="userCheck1" runat="server"></MYBOOKSHOP:UserCheck></TD>
</TR>
<TR>
<TD>>>购买图书>>我的购物篮</TD>
</TR>
<TR>
<TD vAlign="top" align="center">
<asp:GridView ID="GV" runat="server" AutoGenerateColumns="False" OnRowCancelingEdit="GV_RowCancelingEdit" OnRowCommand="GV_RowCommand" OnRowDeleting="GV_RowDeleting" OnRowEditing="GV_RowEditing" OnRowUpdating="GV_RowUpdating">
<Columns>
<asp:BoundField DataField="CartId" ReadOnly="True" HeaderText="购物篮编号" />
<asp:BoundField DataField="BookName" ReadOnly="True" HeaderText="图书名"/>
<asp:BoundField DataField="Amount" HeaderText="数量"/>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
</TD>
</TR>
<TR>
<TD align="right" bgColor="aqua" style="HEIGHT: 9px"><asp:button id="ButtonBack" runat="server" Text="继续选购" Width="65px" onclick="ButtonBack_Click"></asp:button>
<asp:Button id="ButtonBuy" runat="server" Text="去结算中心" Width="77px" onclick="ButtonBuy_Click"></asp:Button></TD>
</TR>
</TABLE>
</FONT>
</form>
</body>
</HTML>
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;using MyBookShop.BusinessLogicLayer;namespace MyBookShop.Web
{
/// <summary>
/// CartView 的摘要说明。
/// </summary>
public partial class CartView : System.Web.UI.Page
{ /// <summary>
/// 页面加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
InitData();
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
}
#endregion /// <summary>
/// 查询当前用户的购物篮,初始化页面数据
/// </summary>
private void InitData()
{
int userId=0;
if(Session["user_id"]!=null)
userId=Convert.ToInt32(Session["user_id"].ToString());
DataTable dt=Cart.Query(userId);
GV.DataSource=dt;
GV.DataBind();
} /// <summary>
/// 返回按钮的单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ButtonBack_Click(object sender, System.EventArgs e)
{
Response.Redirect("BookList.aspx");
} /// <summary>
/// DataGrid编辑按钮列单击事件
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void DG_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//设置当前修改项的索引
GV.EditIndex= (int)e.Item.ItemIndex;
InitData();
} /// <summary>
/// DataGrid取消按钮列单击事件
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void DG_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//设置修改项的索引为-1,即没有行处于被修改状态
GV.EditIndex = -1;
InitData();
} /// <summary>
/// 去结算中心按钮单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ButtonBuy_Click(object sender, System.EventArgs e)
{
Response.Redirect("Bill.aspx");
} protected void DG_SelectedIndexChanged(object sender, System.EventArgs e)
{
} /// <summary>
/// 按钮单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GV_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument); //待处理的行下标
int cartId = -1;
Cart cart = new Cart(); switch (e.CommandName)
{
//编辑
case "Edit":
GV.EditIndex = index;
break; //修改
case "Update":
cartId = Convert.ToInt32(GV.Rows[index].Cells[0].Text);
Hashtable ht = new Hashtable();
ht.Add("Amount", ((TextBox)GV.Rows[index].Cells[2].Controls[0]).Text.ToString());
cart.Update(ht, cartId);
GV.EditIndex = -1;
break; //取消
case "Cancel":
GV.EditIndex = -1;
break; //删除
case "Delete":
cartId = Convert.ToInt32(GV.Rows[index].Cells[0].Text);
cart.RemoveBook(cartId); //利用Cart的Remove方法,删除某种图书
break;
default:
break;
}
InitData();
} protected void GV_RowEditing(object sender, GridViewEditEventArgs e)
{
} protected void GV_RowUpdating(object sender, GridViewUpdateEventArgs e)
{ }
protected void GV_RowDeleting(object sender, GridViewDeleteEventArgs e)
{ }
protected void GV_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{ }
}
}
有点明白了.
对了,那如果用我原先的程序,要怎么跟gridview绑定并显示啊?
有点明白了.
对了,那如果用我原先的程序,要怎么跟gridview绑定并显示啊?
方法 拖拽出一个控件来 点击查看代码 就可看到主要的四个属性 大多是 指定“结果集名”
而这个结果集名 就是你CRUD 出来的结果集了
可以借鉴 怎么代码形式用gridview
dst = cd.GetData("select kfcg,wtid,intime,zhanduan,zhanming,leibie,miaoshu,koufen,hejianren,ischeck,left(zg,3) as zt,left(ps,3) as lj,left(chl,4) as cl from my_allwenti"+tj+" order by dt desc");
GridView1.DataSource = dst;
GridView1.DataBind();
GridView2.DataSource = dst;
GridView2.DataBind();
用gridview连接数据库的表我就会,但是连接这个购物车的类,我就不懂了。
我这样来绑定,一运行就出错。 <asp:GridView ID="GridView1" runat="server" DataSourceID="ShoppingCart">
</asp:GridView>
<asp:ObjectDataSource ID="ShoppingCart" runat="server"></asp:ObjectDataSource>
就是显示Cart的 页面啊 页面上方实现货物数量修改和删除