页面加载上的ASP.NET会话购物车项目问题未更新

时间:2011-08-04 13:31:30

标签: asp.net

即。我的页面上有一段代码,如下所示,位于page_load

Dim subTotal As Integer = 0
    For Each item As CartItem In ShoppingCart.Instance.Items
        subTotal += 1
    Next

    strShoppingCart.Append(subTotal).Append(" Items")
    shoppingCartItems.Text = strShoppingCart.ToString()

然后我可以按如下方式将商品添加到购物车

受保护的Sub Update_Click(ByVal sender As Object,ByVal e As EventArgs)         Dim rowscount As Integer = productListTable.Rows.Count

    For Each row As GridViewRow In productListTable.Rows
        If row.RowType = DataControlRowType.DataRow Then
            ' We'll use a try catch block in case something other than a number is typed in. If so, we'll just ignore it.
            Try
                ' Get the productId from the GridView's datakeys
                Dim productId = Convert.ToInt32(productListTable.DataKeys(row.RowIndex).Value)
                ' Find the quantity TextBox and retrieve the value
                Dim quantity = Integer.Parse(CType(row.Cells(1).FindControl("txtQuantity"), TextBox).Text)
                'Dim price = Decimal.Parse(CType(row.Cells(1).FindControl("TradePriceField"), Label).Text)
                Dim price = Decimal.Parse("16.00")
                Dim productName = CType(row.Cells(1).FindControl("ProductNameField"), Label).Text
                Dim packSize = Integer.Parse(CType(row.Cells(1).FindControl("PackSizeField"), Label).Text)
                Dim stockIndicator = Integer.Parse(CType(row.Cells(1).FindControl("PackSizeField"), Label).Text)
                ShoppingCart.Instance.AddItem(productId, quantity, price, productName, packSize, stockIndicator)


            Catch ex As FormatException

            End Try
        End If
    Next
End Sub

问题如下

页面加载 项目数量为0

我添加了一个产品,当会话中实际有1个项目时,页面仍然显示0个项目 我刷新了计数器转到的页面

如何从正确的会话计数中读取?

2 个答案:

答案 0 :(得分:2)

Page_Load将在Update_Click之前触发,这就是为什么在初始表单提交后您没有看到计数增加的原因。您需要在shoppingCartItems执行后更新Update_Click控件,或者您可以Response.Redirect返回页面以更新显示。我个人喜欢在帖子后使用Response.Redirect,因为如果用户刷新页面,那么您将看不到那个说它会重新发布数据的浏览器消息。

您也可以查看ASP.NET Page Life Cycle

答案 1 :(得分:0)

我在购物车上遇到了类似的问题,但是我使用了AJAX更新面板,而且Redirect没有采用AJAX方式。

在将商品添加到购物车后,我在代码中使用了mycartlistview.DataBind()