即。我的页面上有一段代码,如下所示,位于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个项目 我刷新了计数器转到的页面
如何从正确的会话计数中读取?
答案 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()
。