session variable issue?

G

Guest

I have a function that is called when the user clicks the submit button,
during this function i also set a varaible to "Y" due to that this function
does a post back to the page then redirects. When I look for the session
variable in the page.isPostBack section it equals nothing, it appears that
the variable is not being passed to the post back section correctly. I have
this due to I only want this function to run if the user has something
selected in the grid.

code:
if checkbox.checked.tostring() = true then
dim cars as string = session("selection")
cars = "Y"
end if

in the post back
if page.isPostback
if session("selection") = "Y" then 'this equals nothing I debugged it and
its getting set in the function but being passed as NOTHING
run Function
end if
end if
 
W

William F. Robertson, Jr.

You are never assigning Session("Selection") to anything.

You are setting the string "cars" to 'Y', but since never assign the Session
it will not work the way you want. I can give a more detailed explaination
if you need one, but for now reverse your code like so:

'do not call .ToString() on this, just use the bool value checkd
if checkbox.checked = true then
dim cars as string
cars = "Y"
Session("selection") = cars
end if

Then you code on the next page will work as you are hoping for it to work.

bill
 
G

Guest

I made the change you requested but i'm still having the same issue?

the session varaible is coming back blank

on the page where i'm setting the variable.
sub page_load
if page.ispostback then
if session("selection") = "Y" then 'this is sitll coming back as
nothing
response.write("You selected the following" & " " & cars)
end if
end if

im the button click routine
if CurrentCheckBox.Checked = True Then
Dim cars As String
selectedCars= "Y"
Session("selection") = selectedCars
End If
 
W

William F. Robertson, Jr.

Mike,

Are these code snippets on the same page? If so, then it will not work this
way. The Button click event is fired after Page_Load. So the session will
be Nothing as it has not been set yet. Typically you would show action is
response to a Button Click event, or you can just check the CheckBox
directly in page load, depending on what else you have going during your
page execution.

If the code is on two different pages, how are you transfering the user to
the other page. Response.Redirect, Server.Transfer, Execute?

bill
 
G

Guest

they are on the same page for the reason being that I need to post back to
myself to get the users selection from the datalist, then pass only the items
selected to the detail page via a querystring. ( in which i'm also have an
issue with in .NET with this particular one.)

here is the button code snippet
For I = 0 To datalist.Items.Count - 1
checkBox= dlScores.Items(I).FindControl("chkCars")
carMake= dlScores.Items(I).FindControl("carmake")
cbValue = cbValue & checkbox.Checked.ToString()
If checkbox.Checked.ToString = True Then
carMake= carMake & carmake.Text.ToString() & "|"
End If
Next
response.redirect("cardetails.aspx?car=" & carMake)

this is the function that loops thru the datalist and gets me all the cars
selected then pass only them to the detail page.

Is there an easier way to do this? I only want this to fire when the button
is clicked by the user. Also with the querystring if i have the string
seperated with | it will not work, even if i split the string. though it will
work if i remove the | and only select one car in the datalist
 
W

William F. Robertson, Jr.

I am guessing you did not set Option Explicit On on the top of of your code.
Without strongly typed variable definitions, and I not sure what type your
variables are.

is cbValue a checkbox or a bool?
what exactly does this line do? or rather, what should it do.
carMake= carMake & carmake.Text.ToString() & "|"

is carMake a string, or a text box.

Here is a link for the option explicit on MS site. I would HIGHLY
recommend, as would most posters on this newgroup, setting this.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vblr7/html/vastmOptionExplicit.asp

Try using Server.UrlEncode, the pipe character might have some special
meaning through a querystring. ie

Response.Redirect( "cardetails.aspx?car=" + Server.UrlEncode( carMake ) )

bill
 
P

Pross

Just something I noticed Mike. You are doing a redirect, but then you
handling code in inside a "ispostback" block. If you do a redirect, even if
it's to the same page you are on, then ispostback is false.

If I misunderstood you then I apologize.

Paul Ross
Hebco, Inc.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top