我写了一个基本的购物页面。当用户点击商品和有效数量时,他们会使用添加商品按钮将商品添加到购物车。这应该获取保存列表的会话变量,添加新项目,然后将更新的列表放回会话中。
编辑: 看起来这些项目正在添加,但在下一页重新加载之前不会显示。为什么呢?
除了初始点击之外,它的大多数情况都有效,除非我再次点击添加,否则项目的数量将保持为0。从那里一切正常。
我确信我忽略了一些简单的事情。
在加载方法页面中,如果没有会话,我会创建新列表。否则使用现有列表:
If IsNothing(Session("CustomerItems")) Then
CustomerItemsList = New List(Of CustomerProduct)
'Session("CustomerItems") = CustomerItemsList
Response.Write("Session did not exist yet.")
Else
CustomerItemsList = Session("CustomerItems")
Response.Write("Session Loaded.")
End If
接下来,将值添加到数组的列表框控件中以显示项目。
最后我放了这些线。我将使用.IsPostBack页面稍后列出列表中的所有项目:
If Page.IsPostBack Then
Response.Write("<br>Page has been posted back. There Are Currently " & CustomerItemsList.Count & " items.")
Else
Response.Write("<br>Page has NOT been posted back. There Are Currently " & CustomerItemsList.Count & " items.")
End If
最后,我的点击事件如下所示:
Protected Sub btnAddItem_Click(sender As Object, e As EventArgs) Handles btnAddItem.Click
CustomerItemsList = Session("CustomerItems")
Dim CustomerItem As CustomerProduct
CustomerItem.Description = ProductArray(lstItemDescriptions.SelectedIndex, 0)
CustomerItem.ItemQty = txtItemQty.Text
CustomerItem.BulkFee = ProductArray(lstItemDescriptions.SelectedIndex, 1)
CustomerItem.UnitWeight = ProductArray(lstItemDescriptions.SelectedIndex, 2)
CustomerItem.TotalWeight = Double.Parse(ProductArray(lstItemDescriptions.SelectedIndex, 2)) * Double.Parse(txtItemQty.Text)
CustomerItem.UnitCost = ProductArray(lstItemDescriptions.SelectedIndex, 3)
CustomerItem.TotalCost = CustomerItem.UnitCost * CustomerItem.ItemQty
CustomerItemsList.Add(CustomerItem)
Session("CustomerItems") = CustomerItemsList
End Sub
现在,我已经过几次这个事了,它可能很简单,但它没有任何意义。