.net使用IList泛型集合如何实现购物车

自已学习做了一个网上购物的系统,但是在编写购物车的过程中,遇到了很大的阻碍。开始用的session和cookie然后再考虑了一些消耗的问题后。想到了IList<>泛型集合... 自已学习做了一个网上购物的系统,但是在编写购物车的过程中,遇到了很大的阻碍。开始用的session和cookie然后再考虑了一些消耗的问题后。想到了IList<>泛型集合。
但是,使用泛型后才知道,不是那么的容易。
使用泛型,作为datalist的数据源。由购买页面传到购物车页面的数据有:商品id,名称,价位,已经数量。先接到这些数据,在存储在IList中,将IList绑定给datalist。但是每传一次,IList就会从新加载,所以每次购物车里的数据总是一条。不能累加,请问如何实现IList中的数据累加,不随着页面刷新而清空后再次加载当下的数据。
要是有源码的话,感激不尽了。高分求助啊!
我的邮箱,yangmingliangwang@126。com或者QQ:312359647。望各位大牛,不吝指点指点,困扰了快一个周了。快死得了,救救我吧。
2楼的想法,很好,也很简单就可以实现。但是我作为这几天郁闷纠结不已的反省IList<T>让我为之郁闷想死。所以发誓要吧他搞出来,做出一个类封装起来。其实最困难的地方,就是像你所说的那样,如何修改IList中已经存在的对象中,所填充的值呢?很纠结啊
展开
 我来答
cdlgdxgcjsxy
2010-06-07 · TA获得超过238个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:158万
展开全部
就是用泛型,也应该使用session存值的,否则太麻烦。如果你是在觉得session太费服务器的话就用ViewState,它是保存在浏览器缓存的,只要用户不关闭浏览器ViewState就不会消失,用法和session类似。
我喜欢用哈希表和session搭配,哈希表本来就是名值对,可以满足你存储数据的要求,用户每加入一个商品到购物车,就将session原有的东西付给哈希表,再将新的商品key和id += 到哈希表里,然后把这个哈希表再放到session里面。每次都如此。最后将session里面的东西付给一个datatable就可以了啊。

我还是不太明白你为什么要用泛型,我写了一个,你参考看看吧
有两个方法,一个用来添加到购物车,一个用来显示,分别是
1)
int newProduct = 5;//实际应用中写商品id;
addProduct(newProduct);//购物车增加一条,传递一个参数,表明具体商品id
2)
readPRoduct();

1)的代码如下:
List<int> productIds = new List<int>();
if (Session["product"] != null) //放产品id的session
{
productIds = (List<int>)Session["product"];
productIds.Add(newProduct);
Session["product"] = productIds;
}
else
{
productIds.Add(newProduct);
Session["product"] = productIds;
}
2)的代码如下:
List<int> productIds = new List<int>();
productIds = (List<int>)Session["product"];
string Sql="select ProName,Price from Product where ";
DataTable proTable;
for (int i = 0; i < productIds.Count;i++)
{
if (i == 0)
{
Sql += "ProID=" + productIds[i];
}
else
{
Sql += "or ProID=" + productIds[i];
}
}
//根据这个查询字符串建立连接,将内容放到proTable这个DataTable中,然后用proTable做数据源就行啊
没有测试,也没考虑安全,你参考下吧。
如果你一定不要用任何ViewState、session等等缓存机制的话,我认为真的没必要,毕竟这些机制就是为方便开发而创立的啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式