Click to See Complete Forum and Search --> : Session Variable Screwup


Mr Initial Man
01-14-2008, 03:24 PM
I'm having a serious problem with Session variables. Here is part of the VB coding for the starting file:


Partial Class _Default
Inherits System.Web.UI.Page
Dim Order_Info(5) As Product
Dim Iteration As Integer
Dim Province As String
Dim SubTotal As Decimal
Dim TaxRate As Decimal
Dim Tax As Decimal
Dim GrandTotal As Decimal
Protected Function Product_Info(ByVal Number) As Product
Dim Info As New Product
Dim Name As New Names
Dim ProdID As New ProdIDs
Dim Price As New Prices
Dim ProdNum As New ProdNums
Info.ImageFile = "./Images/" + ProdID.ProdID(Number) + ".jpg"
Info.ImageID = ProdID.ProdID(Number) + "_IMG"
Info.Name = Name.Name(Number)
Info.ProdID = ProdID.ProdID(Number)
Info.ProdNum = ProdNum.ProdNum(Number)
Info.Price = Price.Price(Number)
Return Info
End Function
Protected Function UpdateOrder(ByVal New_Product As Product, ByVal Quantity As Integer) As Product
Dim Prod_Info As New Product
Prod_Info = New_Product
Prod_Info.Quantity = Quantity
Prod_Info.ProdTotal = Prod_Info.Price * Quantity
Return Prod_Info
End Function
Protected Function TotalPrices() As Decimal
Dim TotalPrice As Decimal = 0
For Iteration = 0 To 5 Step 1
TotalPrice = TotalPrice + Order_Info(Iteration).ProdTotal
Next
Return TotalPrice
End Function
Protected Function ProvinceTax(ByVal Province As String) As Decimal
Dim Prov_Tax_Amount As New Tax
Dim Taxes As Decimal
Select Case Province
Case "AB"
Taxes = Prov_Tax_Amount.AB
Case "BC"
Taxes = Prov_Tax_Amount.BC
Case "MB"
Taxes = Prov_Tax_Amount.MB
Case "NB"
Taxes = Prov_Tax_Amount.NB
Case "NF"
Taxes = Prov_Tax_Amount.NF
Case "NS"
Taxes = Prov_Tax_Amount.NS
Case "NT"
Taxes = Prov_Tax_Amount.NT
Case "NU"
Taxes = Prov_Tax_Amount.NU
Case "ONT"
Taxes = Prov_Tax_Amount.ONT
Case "PE"
Taxes = Prov_Tax_Amount.PE
Case "QC"
Taxes = Prov_Tax_Amount.QC
Case "SK"
Taxes = Prov_Tax_Amount.SK
Case "YT"
Taxes = Prov_Tax_Amount.YT
End Select
Return Taxes
End Function

Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete
If Session("Order") Is Nothing Then
For Iteration = 0 To 5 Step 1
Dim OrderItem As New Product
OrderItem = Product_Info(Iteration)
Order_Info(Iteration) = OrderItem
Order_Info(Iteration).Quantity = 0
Order_Info(Iteration).ProdTotal = 0
Next
Session("Order") = Order_Info
Else
Order_Info = Session("Order")
End If

' Product Names'
lbl_Prod0_Name.Text = Order_Info(0).Name
lbl_Prod1_Name.Text = Order_Info(1).Name
lbl_Prod2_Name.Text = Order_Info(2).Name
lbl_Prod3_Name.Text = Order_Info(3).Name
lbl_Prod4_Name.Text = Order_Info(4).Name
lbl_Prod5_Name.Text = Order_Info(5).Name

' Product Images'
' - Image URLS'
IMG_Prod0.ImageUrl = Order_Info(0).ImageFile
IMG_Prod1.ImageUrl = Order_Info(1).ImageFile
IMG_Prod2.ImageUrl = Order_Info(2).ImageFile
IMG_Prod3.ImageUrl = Order_Info(3).ImageFile
IMG_Prod4.ImageUrl = Order_Info(4).ImageFile
IMG_Prod5.ImageUrl = Order_Info(5).ImageFile
' - Image IDs'
IMG_Prod0.ID = Order_Info(0).ImageID
IMG_Prod1.ID = Order_Info(1).ImageID
IMG_Prod2.ID = Order_Info(2).ImageID
IMG_Prod3.ID = Order_Info(3).ImageID
IMG_Prod4.ID = Order_Info(4).ImageID
IMG_Prod5.ID = Order_Info(5).ImageID
' - Image Alternate Text'
IMG_Prod0.AlternateText = Order_Info(0).Name
IMG_Prod1.AlternateText = Order_Info(1).Name
IMG_Prod2.AlternateText = Order_Info(2).Name
IMG_Prod3.AlternateText = Order_Info(3).Name
IMG_Prod4.AlternateText = Order_Info(4).Name
IMG_Prod5.AlternateText = Order_Info(5).Name

' Prices'
lbl_Prod0_Price.Text = FormatCurrency(Order_Info(0).Price)
lbl_Prod1_Price.Text = FormatCurrency(Order_Info(1).Price)
lbl_Prod2_Price.Text = FormatCurrency(Order_Info(2).Price)
lbl_Prod3_Price.Text = FormatCurrency(Order_Info(3).Price)
lbl_Prod4_Price.Text = FormatCurrency(Order_Info(4).Price)
lbl_Prod5_Price.Text = FormatCurrency(Order_Info(5).Price)

' Product Number'
lbl_Prod0_Num.Text = Order_Info(0).ProdNum
lbl_Prod1_Num.Text = Order_Info(1).ProdNum
lbl_Prod2_Num.Text = Order_Info(2).ProdNum
lbl_Prod3_Num.Text = Order_Info(3).ProdNum
lbl_Prod4_Num.Text = Order_Info(4).ProdNum
lbl_Prod5_Num.Text = Order_Info(5).ProdNum

' Quantity'
txt_Prod0_Quant.Text = Order_Info(0).Quantity
txt_Prod1_Quant.Text = Order_Info(1).Quantity
txt_Prod2_Quant.Text = Order_Info(2).Quantity
txt_Prod3_Quant.Text = Order_Info(3).Quantity
txt_Prod4_Quant.Text = Order_Info(4).Quantity
txt_Prod5_Quant.Text = Order_Info(5).Quantity

' Summary Product Numbers'
lbl_Num_Prod0.Text = Order_Info(0).ProdNum
lbl_Num_Prod1.Text = Order_Info(1).ProdNum
lbl_Num_Prod2.Text = Order_Info(2).ProdNum
lbl_Num_Prod3.Text = Order_Info(3).ProdNum
lbl_Num_Prod4.Text = Order_Info(4).ProdNum
lbl_Num_Prod5.Text = Order_Info(5).ProdNum

' Summary Product Names'
lbl_Name_Prod0.Text = Order_Info(0).Name
lbl_Name_Prod1.Text = Order_Info(1).Name
lbl_Name_Prod2.Text = Order_Info(2).Name
lbl_Name_Prod3.Text = Order_Info(3).Name
lbl_Name_Prod4.Text = Order_Info(4).Name
lbl_Name_Prod5.Text = Order_Info(5).Name

' Summary Product Prices'
lbl_Price_Prod0.Text = FormatCurrency(Order_Info(0).Price)
lbl_Price_Prod1.Text = FormatCurrency(Order_Info(1).Price)
lbl_Price_Prod2.Text = FormatCurrency(Order_Info(2).Price)
lbl_Price_Prod3.Text = FormatCurrency(Order_Info(3).Price)
lbl_Price_Prod4.Text = FormatCurrency(Order_Info(4).Price)
lbl_Price_Prod5.Text = FormatCurrency(Order_Info(5).Price)

' Summary Product Quantities'
lbl_Quant_Prod0.Text = Order_Info(0).Quantity
lbl_Quant_Prod1.Text = Order_Info(1).Quantity
lbl_Quant_Prod2.Text = Order_Info(2).Quantity
lbl_Quant_Prod3.Text = Order_Info(3).Quantity
lbl_Quant_Prod4.Text = Order_Info(4).Quantity
lbl_Quant_Prod5.Text = Order_Info(5).Quantity

' Summary Product Totals'
lbl_Total_Prod0.Text = FormatCurrency(Order_Info(0).ProdTotal)
lbl_Total_Prod1.Text = FormatCurrency(Order_Info(1).ProdTotal)
lbl_Total_Prod2.Text = FormatCurrency(Order_Info(2).ProdTotal)
lbl_Total_Prod3.Text = FormatCurrency(Order_Info(3).ProdTotal)
lbl_Total_Prod4.Text = FormatCurrency(Order_Info(4).ProdTotal)
lbl_Total_Prod5.Text = FormatCurrency(Order_Info(5).ProdTotal)

' Summary Totals'
SubTotal = TotalPrices()
Province = ddl_Provinces.SelectedValue
TaxRate = ProvinceTax(Province)
Tax = TaxRate * SubTotal
GrandTotal = SubTotal + Tax

lblSubTotal.Text = FormatCurrency(SubTotal)
lblTax.Text = FormatCurrency(Tax)
lblGrandTotal.Text = FormatCurrency(GrandTotal)




End Sub

...

Mr Initial Man
01-14-2008, 03:37 PM
Here's the rest.


Protected Sub Prod0_Submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Prod0_Submit.Click
Order_Info = Session("Order")
Dim Quant_Order As Integer
Dim Prod_Info As New Product
Prod_Info = Order_Info(0)
Quant_Order = txt_Prod0_Quant.Text
Prod_Info = UpdateOrder(Prod_Info, Quant_Order)
Order_Info(0) = Prod_Info
Session("Order") = Order_Info
End Sub

Protected Sub Prod1_Submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Prod1_Submit.Click
Order_Info = Session("Order")
Dim Quant_Order As Integer
Dim Prod_Info As New Product
Prod_Info = Order_Info(1)
Quant_Order = txt_Prod1_Quant.Text
Prod_Info = UpdateOrder(Prod_Info, Quant_Order)
Order_Info(1) = Prod_Info
Session("Order") = Order_Info
End Sub

Protected Sub Prod2_Submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Prod2_Submit.Click
Order_Info = Session("Order")
Dim Quant_Order As Integer
Dim Prod_Info As New Product
Prod_Info = Order_Info(2)
Quant_Order = txt_Prod2_Quant.Text
Prod_Info = UpdateOrder(Prod_Info, Quant_Order)
Order_Info(2) = Prod_Info
Session("Order") = Order_Info
End Sub

Protected Sub Prod3_Submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Prod3_Submit.Click
Order_Info = Session("Order")
Dim Quant_Order As Integer
Dim Prod_Info As New Product
Prod_Info = Order_Info(3)
Quant_Order = txt_Prod3_Quant.Text
Prod_Info = UpdateOrder(Prod_Info, Quant_Order)
Order_Info(3) = Prod_Info
Session("Order") = Order_Info
End Sub

Protected Sub Prod4_Submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Prod4_Submit.Click
Order_Info = Session("Order")
Dim Quant_Order As Integer
Dim Prod_Info As New Product
Prod_Info = Order_Info(4)
Quant_Order = txt_Prod4_Quant.Text
Prod_Info = UpdateOrder(Prod_Info, Quant_Order)
Order_Info(4) = Prod_Info
Session("Order") = Order_Info
End Sub

Protected Sub Prod5_Submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Prod5_Submit.Click
Order_Info = Session("Order")
Dim Quant_Order As Integer
Dim Prod_Info As New Product
Prod_Info = Order_Info(5)
Quant_Order = txt_Prod5_Quant.Text
Prod_Info = UpdateOrder(Prod_Info, Quant_Order)
Order_Info(5) = Prod_Info
Session("Order") = Order_Info
End Sub

Protected Sub btn_ViewOrder_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_ViewOrder.Click
Province = ddl_Provinces.SelectedValue
Session("Province") = Province
Session("Order") = Order_Info
Response.Redirect("Default2.aspx")
End Sub
End Class

The session variables are "Province" and "Order". NOTE: On the default page (Default.aspx.vb), this coding works PERFECTLY.

Where things go haywire is when I try to pass the session variable on to another page (default2.aspx)

Mr Initial Man
01-14-2008, 03:40 PM
Here is the VB.Net coding for Default2.aspx


Partial Class Default2
Inherits System.Web.UI.Page
Dim Order_Info(5) As Product
Dim SubTotal As Decimal
Dim GrandTotal As Decimal
Dim Sales_Tax As Decimal
Dim Tax_Amount As Decimal
Dim Province As String
Protected Function ProvinceTax(ByVal Province As String) As Decimal
Dim Prov_Tax_Amount As New Tax
Dim Taxes As Decimal
Select Case Province
Case "AB"
Taxes = Prov_Tax_Amount.AB
Case "BC"
Taxes = Prov_Tax_Amount.BC
Case "MB"
Taxes = Prov_Tax_Amount.MB
Case "NB"
Taxes = Prov_Tax_Amount.NB
Case "NF"
Taxes = Prov_Tax_Amount.NF
Case "NS"
Taxes = Prov_Tax_Amount.NS
Case "NT"
Taxes = Prov_Tax_Amount.NT
Case "NU"
Taxes = Prov_Tax_Amount.NU
Case "ONT"
Taxes = Prov_Tax_Amount.ONT
Case "PE"
Taxes = Prov_Tax_Amount.PE
Case "QC"
Taxes = Prov_Tax_Amount.QC
Case "SK"
Taxes = Prov_Tax_Amount.SK
Case "YT"
Taxes = Prov_Tax_Amount.YT
End Select
Return Taxes
End Function



Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete
Province = Session("Province")
Order_Info = Session("Order")
Dim Prod0 As New Product
Dim Prod1 As New Product
Dim Prod2 As New Product
Dim Prod3 As New Product
Dim Prod4 As New Product
Dim Prod5 As New Product
lbl_Num_Prod0.Text = Prod0.ProdNum
lbl_Name_Prod0.Text = Prod0.Name
lbl_Price_Prod0.Text = FormatCurrency(Prod0.Price)
lbl_Quant_Prod0.Text = Prod0.Quantity
lbl_Total_Prod0.Text = FormatCurrency(Prod0.ProdTotal)
lbl_Num_Prod1.Text = Prod1.ProdNum
lbl_Name_Prod1.Text = Prod1.Name
lbl_Price_Prod1.Text = FormatCurrency(Prod1.Price)
lbl_Quant_Prod1.Text = Prod1.Quantity
lbl_Total_Prod1.Text = FormatCurrency(Prod1.ProdTotal)
lbl_Num_Prod2.Text = Prod2.ProdNum
lbl_Name_Prod2.Text = Prod2.Name
lbl_Price_Prod2.Text = FormatCurrency(Prod2.Price)
lbl_Quant_Prod2.Text = Prod2.Quantity
lbl_Total_Prod2.Text = FormatCurrency(Prod2.ProdTotal)
lbl_Num_Prod3.Text = Prod3.ProdNum
lbl_Name_Prod3.Text = Prod3.Name
lbl_Price_Prod3.Text = FormatCurrency(Prod3.Price)
lbl_Quant_Prod3.Text = Prod3.Quantity
lbl_Total_Prod3.Text = FormatCurrency(Prod3.ProdTotal)
lbl_Num_Prod4.Text = Prod4.ProdNum
lbl_Name_Prod4.Text = Prod4.Name
lbl_Price_Prod4.Text = FormatCurrency(Prod4.Price)
lbl_Quant_Prod4.Text = Prod4.Quantity
lbl_Total_Prod4.Text = FormatCurrency(Prod4.ProdTotal)
lbl_Num_Prod5.Text = Prod5.ProdNum
lbl_Name_Prod5.Text = Prod5.Name
lbl_Price_Prod5.Text = FormatCurrency(Prod5.Price)
lbl_Quant_Prod5.Text = Prod5.Quantity
lbl_Total_Prod5.Text = FormatCurrency(Prod5.ProdTotal)
' Set Values For Orders'
SubTotal = Prod0.ProdTotal + Prod1.ProdTotal + Prod2.ProdTotal + Prod3.ProdTotal + Prod4.ProdTotal + Prod5.ProdTotal
Sales_Tax = ProvinceTax(Province)
Tax_Amount = Sales_Tax * SubTotal
GrandTotal = Tax_Amount + SubTotal
lblSubTotal.Text = FormatCurrency(SubTotal)
lblTax.Text = FormatCurrency(Tax_Amount)
lblGrandTotal.Text = FormatCurrency(GrandTotal)
Session("Orders") = Order_Info
Session("Province") = Province

End Sub
End Class