我如何将购买的商品添加到购物车中的 gridview?

how do i get purchased items to a gridview in a shopping cart?

嘿,我最近创建了一个购物车,但我在将购买的商品分类到网格视图中时遇到问题。这是我的购物车 class:

Public Class Cart
    Private dt As DataTable = New DataTable()

    Public Sub New()
        dt.Columns.Add(New DataColumn("Product ID"))
        dt.Columns.Add(New DataColumn("Quantity"))
        dt.PrimaryKey = New DataColumn() {dt.Columns("Product ID")}
    End Sub

    Public Sub AddToCart(ByVal prd_id As Integer, ByVal quantity As Integer)
        Dim dr As DataRow = dt.NewRow()
        dr("Product ID") = prd_id
        dr("Quantity") = quantity
        dt.Rows.Add(dr)
    End Sub

    Public Sub RemoveFromCart(ByVal prd_id As Integer)
        Dim dr As DataRow = dt.Rows.Find(prd_id)
        dt.Rows.Remove(dr)
    End Sub

    Public Function GetCart() As DataTable
        Return dt
    End Function
End Class

这是按钮功能:

If Session("Customer_ID") <> Nothing Then
    Dim userCart As Cart = CType(Session("shoppingCart"), Cart)
    Dim qty As Integer = txtqty.text
    Dim pid As Integer = lblid.text
    userCart.AddToCart(pID, qty)
Else 
    Response.Redirect("User_Login.aspx")
End If

当我尝试 运行 代码时,我收到一条错误消息,提示 ("Object reference not set to an instance of an object.") 请帮助我 运行 完全没有想法。我该如何解决这个问题?

"shoppingCart" 的会话密钥的值为 Nothing,因此当您尝试从 userCart 实例调用 AddToCart 函数时,您会收到此错误。您必须确保 Session("shoppingCart") 不是空的。如果是,您应该创建它或执行您希望在该场景中执行的逻辑。请注意,Session 会在客户端处于非活动状态一段时间后超时(可在 Web.config 文件中配置),因此这是一个非常真实的场景。

    Dim userCart As Cart = Nothing

    If Not Session("shoppingCart") Is Nothing Then

        userCart = CType(Session("shoppingCart"), Cart)

    Else

        userCart = New Cart

    End If

    userCart.AddToCart(pID, qty)

别忘了将您的购物车保存到会话中!

    Session("shoppingCart") = userCart