나는 VB 백엔드가있는 asp.net에서 매우 간단한 장바구니를 작성하고 있지만 코드에 문제가 있습니다. 응용 프로그램을 실행하고 장바구니에 제품을 추가하려고 할 때 오류 메시지가 나타납니다.ASP.NET 쇼핑 카트
Object reference not set to an instance of an object.
설명 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.
예외 정보 : System.NullReferenceException : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
소스 오류 :
Line 27: Dim blnMatch As Boolean = False
Line 28:
Line 29: For Each Me.objDR In objDT.Rows
Line 30: If objDR("StockItemName") = Product Then
Line 31: objDR("Quantity") += txtQuantity.Text
내가이 일을하고 아마도 누군가를 살펴보고 몇 가지 조언을 제공 할 수있을 것으로 기대 이유를 확실하지 않다? 나는 내 코드를 확인했는데 잘못된 것을 발견 할 수는 없다.
여기 내 코드입니다.
Shoppingcart.aspx
<asp:DropDownList id="ddlProducts" runat="server">
양말 바지 셔츠 모자
수량 :
총 :
Shoppingcart.aspx.vb 수입 System.Data 부분 공개 수업은 shoppingCart
Dim objDT As System.Data.DataTable
Dim objDR As System.Data.DataRow
Private Sub Page_Load(ByVal s As Object, ByVal e As EventArgs)
If Not IsPostBack Then
makeCart()
End If
End Sub
'Mark Cart function
Function makeCart()
objDT = CType(Session("Cart"), DataTable)
objDT.Columns.Add("StockID", GetType(Integer))
objDT.Columns("StockID").AutoIncrement = True
objDT.Columns("StockID").AutoIncrementSeed = 1
objDT.Columns.Add("StockItemName", GetType(String))
objDT.Columns.Add("StockItemValue", GetType(Decimal))
Session("Cart") = objDT
End Function
'This is for adding items to the shopping cart.
Sub AddToCart(ByVal s As Object, ByVal e As EventArgs)
objDT = Session("Cart")
Dim Product As String = ddlProducts.SelectedItem.Text
Dim blnMatch As Boolean = False
For Each Me.objDR In objDT.Rows
If objDR("StockItemName") = Product Then
objDR("Quantity") += txtQuantity.Text
blnMatch = True
Exit For
End If
Next
If Not blnMatch Then
objDR = objDT.NewRow
objDR("Quantity") = txtQuantity.Text
objDR("StockItemName") = ddlProducts.SelectedItem.Text
objDR("StockItemValue") = Decimal.Parse(ddlProducts.SelectedItem.Value)
objDT.Rows.Add(objDR)
Session("Cart") = objDT
End If
dg.DataSource = objDT
dg.DataBind()
End Sub
Function GetItemTotal() As Decimal
Dim intCounter As Integer
Dim decRunningTotal As Decimal
For intCounter = 0 To objDT.Rows.Count - 1
objDR = objDT.Rows(intCounter)
decRunningTotal += (objDR("StockItemValue") * objDR("Quantity"))
Next
Return decRunningTotal
End Function
Sub Delete_Item(ByVal s As Object, ByVal e As DataGridCommandEventArgs)
objDT = Session("Cart")
objDT.Rows(e.Item.ItemIndex).Delete()
Session("Cart") = objDT
dg.DataSource = objDT
dg.DataBind()
lblTotal.Text = "$" & GetItemTotal()
End Sub
최종 클래스
정말 널 세션에서 카트 아닌가? –