VB / ASP页面不会在click方法中将第一个项目添加到列表中

时间:2016-04-24 20:06:11

标签: asp.net vb.net

我写了一个基本的购物页面。当用户点击商品和有效数量时,他们会使用添加商品按钮将商品添加到购物车。这应该获取保存列表的会话变量,添加新项目,然后将更新的列表放回会话中。

编辑: 看起来这些项目正在添加,但在下一页重新加载之前不会显示。为什么呢?

除了初始点击之外,它的大多数情况都有效,除非我再次点击添加,否则项目的数量将保持为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

现在,我已经过几次这个事了,它可能很简单,但它没有任何意义。

0 个答案:

没有答案