购物车如何做到添加同样的商品能够合并,然后数量加一
你的设计其实是可以和控件无关的存在,但是你如果要用ListView,我想这个控件应该用ItemCommand之类的事件,你传递一个CommandArgument参数作为商品ID,在ItemCommand里把这个Argment接收一下,后端不就可以处理了吗。
我是想用JavaScript控制数量的增减,所以说commandArgument应该不太行吧
@leiyahui: 没有问题呀,你可以在ItemDataBind时动态生成一些JavaScript到页面中,在这个事件中你可以使用FindControl找到相关控件,动态生成你想要的JavaScript代码。
其实呀,我觉得你的思路是有问题的,既然用了服务端控件就有一整套,要么不用,用了服务端控件,却要手写JS,就是相当于拿了个带刺刀的枪,枪是坏的,你不觉得这刀太重了么?
如果要实现Ajax, 可以使用 UpdatePannel呀?
如果不想使用服务端控件,直接用HTML + Ajax 不就可以了么?
@沧海一杰: 恩恩,我还是菜鸟学生,所以水平比较菜,谢谢你的帮助
添加前判断一下就可以了。
那一般购物车里的信息需要保存到SEssion里吗
第一次写购物车,不太懂
@leiyahui: 那么问题来了,
你是不懂写购物车,还是不懂的如何做到添加同样的商品能够合并?
@爱编程的大叔: 确切的说是购物车
@leiyahui:
我很认真的,没有嘲笑你的意思。
1、你懂得如何写购物车,所以你的问题是如何合并数量,我当然说先判断一下了。
2、至于购物车里面的数据,你总得找个地方存放的,不然如何判断?!
3、我问的意思就是要你确切知道哪个地方你不知道,一个大问题分成N个小问题,就简单了。
4、你回答我的表示你是不知道如何写购物车(先不用管合并的事情,你得写出来,然后才管合并),饭要一口一口吃。
@爱编程的大叔: 谢谢指导啦
@爱编程的大叔: 大叔,请问一下您那里有源码之类的吗,我在网上找的都不太满意
一件物品在数据库保存的ID一样的,加一样的,就在数据库累计1就行,没必要去保存信息,都是一个ID,进行传送
那么信息需要保存在SEssion中吗
@leiyahui: 你建立一张购物车的表,保存物品的ID与数量等一些信息,你加入物品,直接更新数据库,你为什么一定要保存到session,保存session的数据尽量少一些
@稳稳的河:恩谢谢
@leiyahui: 其实购物车就是几张表的问题,你搞明白你数据库表的关系,你问的问题就都明白了
@稳稳的河: 恩恩,方便把QQ给我吗
@leiyahui: 可以保存在cookie,session及到数据库里,这个也要分情况,如果你想让用户可以没有登录就能访问购物车,就可以存在cookie里,当用户登录以后,可以立即同步到数据库,一般不会存在session里,对服务器性能影响比较大的,如果是小站点就无所谓了。
@沧海一杰:如果用ListView这个控件,那么数量增加这个东西如何实现,就是说每个“+”这个按钮的ID都一样,如何区别是哪种商品的增加,我写的源代码在下边
<asp:ListView runat="server" ID="Lv_Cart"
ItemPlaceholderID="itemplaceholder">
<LayoutTemplate>
<table>
<tr>
<th>产品名称</th>
<th>单价</th>
<th>数量</th>
<th>删除</th>
</tr>
<div runat="server" id="itemplaceholder">
</div>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("pro_name") %></td>
<td><%#Eval("pro_price") %></td>
<td><asp:Button runat="server" ID="Btn_Reduce" Text="+"/>
<asp:TextBox runat="server" Text='<%#Bind("cart_pro_id") %>' ID="Tb_num">
</asp:TextBox>
<asp:Button runat="server" ID="Btn_Plus" Text="-" />
</td>
<td>
<asp:Button runat="server" ID="Btn_deleting" Text="删除" OnCommand="Cart_Deleting" CommandArgument='<%#Eval("cart_pro_id") %>' />
</td>
</tr>
</ItemTemplate>
</asp:ListView>