Wednesday, May 21, 2008

Shopping Cart With Session

Imports System.Data
Partial Class ViewCart
Inherits System.Web.UI.Page
Dim objDT As System.Data.DataTable
Dim objDR As System.Data.DataRow
Public Total As Decimal

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
If Session("StartCart") = Nothing Then
makeCart()
AddToCart(Nothing, Nothing)
GetItemTotal()
Else
objDT = Session("Cart")
Dim itemCount As String = objDT.Rows.Count
Dim sessICount() As String = Session.Item("Product").Split(",")
If itemCount <> sessICount.Length Then
'--------
Dim i As Integer = 0
For i = (itemCount) To sessICount.Length - 1
'Dim Product = a(i)
Dim adp_CartPrd As New ViewCartDsTableAdapters.Product_MasterTableAdapter
Dim tb_CartPrd As New ViewCartDs.Product_MasterDataTable
adp_CartPrd.FillProductByPId(tb_CartPrd, sessICount(i))
objDR = objDT.NewRow
objDR("Quantity") = 1
objDR("Image") = tb_CartPrd.Rows(0).Item("ProdImage")
objDR("Product") = tb_CartPrd.Rows(0).Item("ProdName")
objDR("Cost") = Decimal.Parse(123.5)
objDR("ProdId") = tb_CartPrd.Rows(0).Item("ProdId")
objDT.Rows.Add(objDR)
Session("Cart") = objDT
gvCart.DataSource = objDT
gvCart.DataBind()
GetItemTotal()
Next
'---------
Else
gvCart.DataSource = objDT
gvCart.DataBind()
GetItemTotal()
End If

End If
Else
Dim i As Integer
i = 0
makeCart()
For i = 0 To gvCart.Rows.Count - 1
Dim sess As String = Session("Product")
Dim a() As String = sess.Split(",")
Dim Product = a(i)
Dim adp_CartPrd As New ViewCartDsTableAdapters.Product_MasterTableAdapter
Dim tb_CartPrd As New ViewCartDs.Product_MasterDataTable
adp_CartPrd.FillProductByPId(tb_CartPrd, a(i))
objDR = objDT.NewRow
objDR("Quantity") = CType(gvCart.Rows(i).FindControl("textQuantity"), TextBox).Text
objDR("Image") = tb_CartPrd.Rows(0).Item("ProdImage")
objDR("Product") = tb_CartPrd.Rows(0).Item("ProdName")
objDR("Cost") = Decimal.Parse(123.5)
objDR("ProdId") = tb_CartPrd.Rows(0).Item("ProdId")
objDT.Rows.Add(objDR)
Next
Session("Cart") = objDT
gvCart.DataSource = objDT
gvCart.DataBind()
GetItemTotal()
End If
End Sub
Sub AddToCart(ByVal s As Object, ByVal e As EventArgs)
Dim sess As String = Session("Product")
Dim a() As String = sess.Split(",")
Dim i As Integer
i = 0
objDT = Session("Cart")
Session("StartCart") = "Start"
For i = 0 To a.Length - 1
Dim Product = a(i)
Dim adp_CartPrd As New ViewCartDsTableAdapters.Product_MasterTableAdapter
Dim tb_CartPrd As New ViewCartDs.Product_MasterDataTable
adp_CartPrd.FillProductByPId(tb_CartPrd, a(i))
objDR = objDT.NewRow
objDR("Quantity") = 1
objDR("Image") = tb_CartPrd.Rows(0).Item("ProdImage")
objDR("Product") = tb_CartPrd.Rows(0).Item("ProdName")
objDR("Cost") = Decimal.Parse(123.5)
objDR("ProdId") = tb_CartPrd.Rows(0).Item("ProdId")
objDT.Rows.Add(objDR)
Session("Cart") = objDT
gvCart.DataSource = objDT
gvCart.DataBind()
Next
End Sub
Function makeCart()
objDT = New System.Data.DataTable("Cart")
'objDT.Columns.Add("ID", GetType(Integer))
'objDT.Columns("ID").AutoIncrement = True
'objDT.Columns("ID").AutoIncrementSeed = 1
objDT.Columns.Add("ProdId", GetType(String))
objDT.Columns.Add("Image", GetType(String))
objDT.Columns.Add("Product", GetType(String))
objDT.Columns.Add("Quantity", GetType(Integer))
objDT.Columns.Add("Cost", GetType(Decimal))
Session("Cart") = objDT
Return ""
End Function
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("Cost") * objDR("Quantity"))
Next
Total = decRunningTotal
Return decRunningTotal
End Function