用datatable实现购物车

红皮猴 2006-07-20 11:05:33
建了个表TB(存到session中)有2个字段a(主键)和b添加到是正常但删除和更新就有问题
我利用循环查找要删除的行
for each i=0 to tb.row.count-1
if tb.row(i)("a")=1 then
tb.row.remove(tb.row(i))
end if
session("car")=tb
重新绑到datalist上

更新的方法和删除初步多

当表只有1行的时候点删除是正常的,但有多行的时候如果不从最后删就会包错说此行没数据但如果刷新界面的时候这条数据又没在了!

请问这个问题要怎么解决呢?或者还有什么好的方法来实现更新和删除
...全文
310 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
红皮猴 2006-07-20
  • 打赏
  • 举报
回复
麻烦给个地址好吗
blackjack212_401 2006-07-20
  • 打赏
  • 举报
回复
在msdn datagrid类 里有购物车 实例 和详细代码
红皮猴 2006-07-20
  • 打赏
  • 举报
回复
帮帮忙呀
红皮猴 2006-07-20
  • 打赏
  • 举报
回复
谢谢!!!!!!!
blackjack212_401 2006-07-20
  • 打赏
  • 举报
回复
copy到你的html里
---------------------------------------------
<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>

<html>
<script language="VB" runat="server">

Dim Cart As DataTable
Dim CartView As DataView

Function CreateDataSource() As ICollection
Dim dt As New DataTable()
Dim dr As DataRow

dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))

Dim i As Integer
For i = 0 To 8
dr = dt.NewRow()

dr(0) = i
dr(1) = "Item " + i.ToString()
dr(2) = 1.23 *(i + 1)

dt.Rows.Add(dr)
Next i

Dim dv As New DataView(dt)
Return dv
End Function 'CreateDataSource


Sub Page_Load(sender As Object, e As EventArgs)

If Session("DG4_ShoppingCart") Is Nothing Then
Cart = New DataTable()
Cart.Columns.Add(New DataColumn("Item", GetType(String)))
Cart.Columns.Add(New DataColumn("Price", GetType(String)))
Session("DG4_ShoppingCart") = Cart

Else
Cart = CType(Session("DG4_ShoppingCart"), DataTable)
End If

CartView = New DataView(Cart)
ShoppingCart.DataSource = CartView
ShoppingCart.DataBind()

If Not IsPostBack Then
' Load this data only once.
ItemsGrid.DataSource = CreateDataSource()
ItemsGrid.DataBind()
End If
End Sub 'Page_Load


Sub Grid_CartCommand(sender As Object, e As DataGridCommandEventArgs)

Dim dr As DataRow = Cart.NewRow()

' e.Item is the table row where the command is raised.
' For bound columns, the value is stored in the Text property of the TableCell.
Dim itemCell As TableCell = e.Item.Cells(2)
Dim priceCell As TableCell = e.Item.Cells(3)
Dim item As String = itemCell.Text
Dim price As String = priceCell.Text

If CType(e.CommandSource, Button).CommandName = "AddToCart" Then
dr(0) = item
dr(1) = price
Cart.Rows.Add(dr)

Else

'Remove from Cart.
CartView.RowFilter = "Item" + ChrW(61) + "'" + item + "'"
If CartView.Count > 0 Then
CartView.Delete(0)
End If
CartView.RowFilter = ""
End If

ShoppingCart.DataBind()
End Sub 'Grid_CartCommand
</script>

<body>

<form runat=server>

<h3>DataGrid Example</h3>

<table cellpadding="5">
<tr valign="top">
<td>

<b>Product List</b>

<asp:DataGrid id="ItemsGrid"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
AutoGenerateColumns="false"
OnItemCommand="Grid_CartCommand"
runat="server">

<HeaderStyle BackColor="#00aaaa">
</HeaderStyle>

<Columns>

<asp:ButtonColumn
HeaderText="Add to cart"
ButtonType="PushButton"
Text="Add"
CommandName="AddToCart" />

<asp:ButtonColumn
HeaderText="Remove from cart"
ButtonType="PushButton"
Text="Remove"
CommandName="RemoveFromCart" />

<asp:BoundColumn
HeaderText="Item"
DataField="StringValue"/>

<asp:BoundColumn
HeaderText="Price"
DataField="CurrencyValue"
DataFormatString="{0:c}">

<ItemStyle HorizontalAlign="right">
</ItemStyle>

</asp:BoundColumn>

</Columns>

</asp:DataGrid>

</td>
<td>

<b>Shopping Cart</b>

<asp:DataGrid id="ShoppingCart"
runat="server"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
ShowFooter="false"
CellPadding="3"
CellSpacing="0">

<HeaderStyle BackColor="#00aaaa">
</HeaderStyle>

</asp:DataGrid>

</td>
</tr>

</table>

</form>

</body>
</html>
blackjack212_401 2006-07-20
  • 打赏
  • 举报
回复
啊,就不用上网了吧 自己装了MSDN 找到 一个 datagrid 选中它 按 F1 就行了啊

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧