如何将购买的商品送到购物车中的gridview?

时间:2015-08-01 02:54:33

标签: asp.net vb.net shopping-cart

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

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

当我尝试运行代码时,我得到一个错误,说明(&#34;对象引用未设置为对象的实例。&#34;)请帮助我完全没有想法。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

&#34; shoppingCart&#34;的会话密钥值为Nothing,因此当您尝试从userCart实例调用AddToCart函数时,您会收到此错误。您必须确保Session(&#34; shoppingCart&#34;)不是什么都不是。如果是,您应该创建它或执行您希望在该场景中执行的逻辑。请注意,在客户端处于非活动状态一段时间后(在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