ShoppingCart.cs 面页
using System;
using System.Web.UI;
using System.Collections; //使用Hashtable类必须引入该命名空间
[Serializable]
public class Stat_Class
{ //定义商品类,保存商品的各种属性
int ShangPinID; //商品ID
String Sp_Name; //商品名称
decimal Sp_Price; //商品价格
int Sp_Quan; //商品数量
public int ItemID
{
get { return ShangPinID; }
set { ShangPinID = value; }
}
public String ShangpinName
{
get { return Sp_Name; }
set { Sp_Name = value; }
}
public decimal Price
{
get { return Sp_Price; }
set { Sp_Price = value; }
}
public int Quantity
{
get { return Sp_Quan; }
set { Sp_Quan = value; }
}
public Stat_Class(int ItemID, String ShangpinName, decimal Price, int Quantity)
{ //构造方法,初始化商品的各个属性
ShangPinID = ItemID;
Sp_Name = ShangpinName;
Sp_Price = Price;
Sp_Quan = Quantity;
}
}
[Serializable]
public class ShoppingCart
{
Hashtable Cart_Orders = new Hashtable();
public ICollection Orders
{
get { return Cart_Orders.Values; }
}
public decimal TotalCost
{ //计算总价格
get
{
decimal total = 0;
foreach (DictionaryEntry entry in Cart_Orders)
{
Stat_Class order = (Stat_Class)entry.Value;
total += (order.Price * order.Quantity);
}
return total;
}
}
public void AddItem(Stat_Class Order)
{ //添加物件方法
Stat_Class order = (Stat_Class)Cart_Orders[Order.ItemID];
if (order != null)
order.Quantity += Order.Quantity;
else
Cart_Orders.Add(Order.ItemID, Order);
}
public void DeleteItem(int ItemID)
{ //删除物件
if (Cart_Orders[ItemID] != null)
Cart_Orders.Remove(ItemID);
}
}
前台CS页面
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;
public partial class gwlan : System.Web.UI.Page
{
ShoppingCart tt = new ShoppingCart();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// 获取购物车的信息
ShowCartInfo();
}
}
private void ShowCartInfo()
{
///判定购物车中是否存在数据
if (Session["MyShoppingCart"] == null)
{
Response.Write("数据出错!!!");
}
else
{
///绑定购物车的数据,显示购物车信息
// 获取购物车的信息
tt = (ShoppingCart)Session["MyShoppingCart"];
this.GridView1.DataSource = tt.Orders;
this.GridView1.DataBind();
this.Label1.Text = String.Format("合计:{0:c}", tt.TotalCost);
}
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
}
protected void RemoveCartItem(object sender, EventArgs e)
{
int ID = (int)GridView1.SelectedDataKey.Value;
//Response.Write(MaginKey.Alert(ID.ToString()));
tt = (ShoppingCart)Session["MyShoppingCart"];
Response.Write(MaginKey.Alert(tt.Orders.Count.ToString()));
tt.DeleteItem(ID);
ShowCartInfo();
}
protected void Button1_Click(object sender, EventArgs e)
{
//tt = (ShoppingCart)Session["MyShoppingCart"];
//for(int i=1;i<tt.Orders.Count;i++)
//{
// Response.Write(tt.Orders.GetEnumerator());
//}
}
}
要求在Button1_Click把数据写入,有点急,谢谢大家了
16 个解决方案
#1
是要保存信息吗?
网上很多的保存存方式
网上很多的保存存方式
#2
Stat_Class s=null;
for(int i=0;i<tt.orders.count;i++)
{
s=(stat_class)tt.Orders[i];
insert into(****)values(s.ItemID,s.ShangpinName,.....) ;
}
for(int i=0;i<tt.orders.count;i++)
{
s=(stat_class)tt.Orders[i];
insert into(****)values(s.ItemID,s.ShangpinName,.....) ;
}
#3
在购物车上增加一个保存数据的方法即可
为降低对象耦合度,可以定义单独的项目或类,用来实现把数据保存到数据库库
至于购物车中的数据如何传递,有很多种方法,直接把购物车传过去,也可以把购物车数据生成SQL语句传过去,这要
看你的设计了.
为降低对象耦合度,可以定义单独的项目或类,用来实现把数据保存到数据库库
至于购物车中的数据如何传递,有很多种方法,直接把购物车传过去,也可以把购物车数据生成SQL语句传过去,这要
看你的设计了.
#4
唉!楼二的方啊好像不行
s=(stat_class)tt.Orders[i]; 无法读出里面的数据
s=(stat_class)tt.Orders[i]; 无法读出里面的数据
#5
使用序列化保存对象实例,然后再写进数据库(YY)
#6
购物车的信息可以先保存在Cookie里,等下订单后再把相关信息写入数据库
#7
我已经保存在SESSION中了,就是不知怎么把它一条一条读出来后写入数据库
#8
没有人会么?
#9
第一.Hashtable Cart_Orders = new Hashtable()这里应该用ilist吧?
也就是调用的时候用ilist<Stat_Class>
返回的时候自然可以绑定了
拿这句来说 this.GridView1.DataSource = tt.Orders;
tt.Orders是什么,是hashtable的value...
也就是调用的时候用ilist<Stat_Class>
返回的时候自然可以绑定了
拿这句来说 this.GridView1.DataSource = tt.Orders;
tt.Orders是什么,是hashtable的value...
#10
我也想知道,petshop4中是用profile.save() 调用SetPropertyValues方法来保存数据的,就是不知道,profile是怎样调用SetPropertyValues的。
#11
如果微软可以用hashtable<Stat_Class>这样的话,估计就可以用hashtable这么传了吧
因为hashtable的每个项都是一个object,而这个object又没有用Stat_Class定义
所以绑的时候才会出错
这是我的理解
因为hashtable的每个项都是一个object,而这个object又没有用Stat_Class定义
所以绑的时候才会出错
这是我的理解
#12
二楼的改下
object o = tt.Orders[i];
s=((stat_class)o;
object o = tt.Orders[i];
s=((stat_class)o;
#13
profile的使用与你在web.config中的profile配置节的配置有关,你声明的参数越多,profile中的属性越多,并一一对应,
在配置好profile后,因修改了web.config使网站应用程序重新启动,asp.net会重新编译,根据配置节中的信息会动态生成profile的派生类来包装你所配置的信息,而profile的数据都会被aspnet_regsql工具所生成的数据库中的表aspnet_profile所记录,这就是我理解的一套profile的流程,当然,这个表的主键是用户的全球唯一标识,并且是和member表联查获得的.profile就说这么多,说错了请见量!
#14
想学一下
#15
k46577471 : 你说的有道理,我也是这样理解的,但是就是不知道petshop4中是怎样将购物车保存到数据库中的.我在断点调试时跟踪到profile.save()时就跟踪不下去了.
#16
我也想知道,我靠,就是没人懂,那些高手都哪去了,
#1
是要保存信息吗?
网上很多的保存存方式
网上很多的保存存方式
#2
Stat_Class s=null;
for(int i=0;i<tt.orders.count;i++)
{
s=(stat_class)tt.Orders[i];
insert into(****)values(s.ItemID,s.ShangpinName,.....) ;
}
for(int i=0;i<tt.orders.count;i++)
{
s=(stat_class)tt.Orders[i];
insert into(****)values(s.ItemID,s.ShangpinName,.....) ;
}
#3
在购物车上增加一个保存数据的方法即可
为降低对象耦合度,可以定义单独的项目或类,用来实现把数据保存到数据库库
至于购物车中的数据如何传递,有很多种方法,直接把购物车传过去,也可以把购物车数据生成SQL语句传过去,这要
看你的设计了.
为降低对象耦合度,可以定义单独的项目或类,用来实现把数据保存到数据库库
至于购物车中的数据如何传递,有很多种方法,直接把购物车传过去,也可以把购物车数据生成SQL语句传过去,这要
看你的设计了.
#4
唉!楼二的方啊好像不行
s=(stat_class)tt.Orders[i]; 无法读出里面的数据
s=(stat_class)tt.Orders[i]; 无法读出里面的数据
#5
使用序列化保存对象实例,然后再写进数据库(YY)
#6
购物车的信息可以先保存在Cookie里,等下订单后再把相关信息写入数据库
#7
我已经保存在SESSION中了,就是不知怎么把它一条一条读出来后写入数据库
#8
没有人会么?
#9
第一.Hashtable Cart_Orders = new Hashtable()这里应该用ilist吧?
也就是调用的时候用ilist<Stat_Class>
返回的时候自然可以绑定了
拿这句来说 this.GridView1.DataSource = tt.Orders;
tt.Orders是什么,是hashtable的value...
也就是调用的时候用ilist<Stat_Class>
返回的时候自然可以绑定了
拿这句来说 this.GridView1.DataSource = tt.Orders;
tt.Orders是什么,是hashtable的value...
#10
我也想知道,petshop4中是用profile.save() 调用SetPropertyValues方法来保存数据的,就是不知道,profile是怎样调用SetPropertyValues的。
#11
如果微软可以用hashtable<Stat_Class>这样的话,估计就可以用hashtable这么传了吧
因为hashtable的每个项都是一个object,而这个object又没有用Stat_Class定义
所以绑的时候才会出错
这是我的理解
因为hashtable的每个项都是一个object,而这个object又没有用Stat_Class定义
所以绑的时候才会出错
这是我的理解
#12
二楼的改下
object o = tt.Orders[i];
s=((stat_class)o;
object o = tt.Orders[i];
s=((stat_class)o;
#13
profile的使用与你在web.config中的profile配置节的配置有关,你声明的参数越多,profile中的属性越多,并一一对应,
在配置好profile后,因修改了web.config使网站应用程序重新启动,asp.net会重新编译,根据配置节中的信息会动态生成profile的派生类来包装你所配置的信息,而profile的数据都会被aspnet_regsql工具所生成的数据库中的表aspnet_profile所记录,这就是我理解的一套profile的流程,当然,这个表的主键是用户的全球唯一标识,并且是和member表联查获得的.profile就说这么多,说错了请见量!
#14
想学一下
#15
k46577471 : 你说的有道理,我也是这样理解的,但是就是不知道petshop4中是怎样将购物车保存到数据库中的.我在断点调试时跟踪到profile.save()时就跟踪不下去了.
#16
我也想知道,我靠,就是没人懂,那些高手都哪去了,