asp.net购物车 小计问题

我做的一个购物车 购物的时候把商品加入到数据库 点击购物车的时候在读取数据库 可是现在有这样一个问题 每种商品的 小计栏 不知道怎么写 知道是 数量*单价 但数量和单价都是绑定 datalist数据源的 麻烦高手指点....
那我用户修改了数据呢? 我想做淘宝那种 修改文本框的数量了 后面的小计马上跟着修改

第1个回答  2011-07-06
<table style=" font-size: 9pt; font-family: 宋体; width:574px; height :806px; background-repeat :no-repeat; background-image: url(images/显示页面当前位置.jpg);">
<tr>
<td style ="height :20px" valign="middle" align="left">
<br /><br /> 
目前位置:首页 > 购物车
</td>
</tr>
<tr>
<td valign =top style ="height :786px" >
<table cellSpacing="0" cellPadding="0" width="95%" align="center" border="0" style="FONT-SIZE: 9pt">
<tr>
<td align="center">
<asp:Label ID="labMessage" runat="server" Visible="False"></asp:Label></td>
</tr>
<tr>
<td align="left" style="height: 30px">
<asp:Label ID="labTotalPrice" runat="server" Text="0.00 " ></asp:Label>¥</td>
</tr>
<tr style =" font :9pt; font-family :宋体;" valign =top >
<td align="left" style="height: 135px">

<asp:GridView ID="gvShopCart" DataKeyNames ="BookID" runat="server" AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanging="gvShopCart_PageIndexChanging" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None" >
<Columns>
<asp:BoundField DataField="No" HeaderText="序号" ReadOnly="True">
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="BookID" HeaderText="商品ID" ReadOnly="True">
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="BookName" HeaderText="商品名称" ReadOnly="True">
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:TemplateField HeaderText="数量">
<ItemTemplate >
<asp:TextBox ID="txtNum" runat="server" Text =<%#Eval("Num") %> Width =60px OnTextChanged="txtNum_TextChanged"></asp:TextBox>
<asp:RegularExpressionValidator
ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtNum"
ErrorMessage="×" ValidationExpression="^\+?[1-9][0-9]*$"></asp:RegularExpressionValidator>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText =单价>
<HeaderStyle HorizontalAlign=Center />
<ItemStyle HorizontalAlign =Center />
<ItemTemplate >
<%#Eval("price")%>¥
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText =总价>
<HeaderStyle HorizontalAlign=Center />
<ItemStyle HorizontalAlign =Center />
<ItemTemplate >
<%#Eval("totalPrice")%>¥
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyle HorizontalAlign=Center />
<ItemStyle HorizontalAlign =Center />
<ItemTemplate >
<asp:LinkButton ID="lnkbtnDelete" runat="server" CommandArgument ='<%#Eval("BookID") %>' OnCommand ="lnkbtnDelete_Command">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

</Columns>
<FooterStyle BackColor="Tan" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<AlternatingRowStyle BackColor="PaleGoldenrod" />
</asp:GridView>
</td>
</tr>
<tr align =left valign =top >
<td align="center" >
<asp:LinkButton ID="lnkbtnUpdate" runat="server" OnClick="lnkbtnUpdate_Click">更新购物车</asp:LinkButton>
 <asp:LinkButton ID="lnkbtnClear" runat="server" OnClick="lnkbtnClear_Click" >清空购物车</asp:LinkButton>
<asp:LinkButton ID="lnkbtnContinue" runat="server" OnClick="lnkbtnContinue_Click" >继续购物</asp:LinkButton>
<asp:LinkButton ID="lnkbtnCheck" runat="server" OnClick="lnkbtnCheck_Click" >前往服务台</asp:LinkButton>
</td>
</tr>
<tr>
<td align="left" >
<br />
 <li>如果要修改商品数量,请单击“更新购物车”按钮    </li> <li>如果要取消某个商品,请直接单击表格控件中的“删除”
<br />
</li>
</td>
</tr>
</table>
</td>
</tr>
</table>
另外,站长团上有产品团购,便宜有保证
第2个回答  推荐于2021-02-05
既然你都已经查出来了 那2列相乘就行了..自定义模板列
MVC的话就在Model类里面计算一下 绑定的时候是可以 BLL.XXXX.属性 可以求出来的

-------------------------------------------
如果修改数据了 可是使用ajax进行变化 也可以后面加一个按钮 功能是更新
也可以开AutoPostBack textbox的value改变的是自动更新追问

@Small?ě�能教下嘛 其实 我也知道是两相乘啊 但我数据是绑定了的 我不可能小计哪里也是直接写绑定数相乘吧 我是想得到文本里面的Text 和单价相乘 而不是绑定的相乘 ........ 能否赐教下?

追答

你可以在后面写一个更新按钮
改完以后用户单机按钮你把2个问文本框相乘
显示在那里

追问

我的是datalist控件 不可以对某个按钮 单独动作 网上看了一些列子 好像是什么protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "date")
{
Response.Redirect("~/date.aspx");
}
}
事件吧...... 但是 具体怎么写吥理解 大概就是这种意思 但我知道这个是错的 请赐教下 谢谢

追答

datalist 也可以写事件的 你新建一个按钮 按钮有个属性 CommandName 譬如设置成 gx
代码跟你的一样 e.CommandName == "gx" 再写你要进行的东西就行了
而且一般购物车 用gridview比较好

追问

喔...... 没事 我这里datalist已经可以用了 就那样效果算了 我学asp.net才一个月,等下改了我又不知道怎样做 又得弄个三两天, 那我点击按钮我怎么知道点击的是哪一行?

追答

datalist绑定的时候加一个隐藏控件 绑定一下ID
int id = int.Parse(((HiddenField)e.Item.FindControl("hidSid")).Value);

这样可以获得ID 也就是哪一行

本回答被提问者采纳
第3个回答  2011-06-28
在你的datasource上加一列,
如:select 数量,单价, 单价*数量 as 小计 from 购物车数据表

这样就取出来直接绑定上小计就行了
第4个回答  2011-06-28
这种方法比较适合你
在数据库字段中增加一个小计字段,每次点击把商品加入到数据库之前先计算总价再将总价存入该字段,直接绑定datalist就好了
第5个回答  2011-06-28
ASP.NET代码我不熟,但你可以打开源代码,看看每一列是如何写的,然后照葫芦画瓢呗。

求助:在ASP.NET C# 中计算合计金额(小计+小计+小计+小计)*折扣=总金额...
给你一个计算的核心代码:double result = 0.0;double sum = 0.0;sum=double.Parse(textbox1.Text) + double.Parse(textbox2.Text) + double.Parse(textbox3.Text) ;\/\/有多少你就加多少;result = sum * double.Parse(textbox_discount.Text);\/\/乘以折扣 textbox_sum = result.ToString(...

asp.net Repeater 怎样将一行中的数值字段相加与判断?
很简单,这个功能只需要在后台定义一个public方法即可。如在页面后台.cs中,定义:public int getCount(int x, int y){ if(x!=0 && y != 0)return x+y;else return 0;} 前台:模板列中,在小计处,<%#getCount(Eval("成本1"),Eval("成本2"))%> ...

asp.net工资管理系统,提示管理员发放工资模块,求大神!!!
如果周末加班,按2倍算,那么加班一天得 50*2*8=800,当月加班4天,得3200 如果5.1加班,按3倍计算,一天得 50*3*8=1200 那么5月份的工资应该这样分类打单:工作日;实际工作日;1.5倍时间(小时)\/ 小计;2倍时间(小时)\/小计 ;3倍时间(小时)\/小计 请假天数 \/ 小计 ……如果5月全勤...

asp.net(vb) datagrid 最后一行显示合计
1.asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="100%" OnRowDataBound="GridView1_RowDataBound" ShowFooter="True"> 2.protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){ \/\/业务汇总 if (e.Row.RowType == DataControlRowType.Da...

相似回答
大家正在搜