Solved

asp.net controls losing value after asp button click event

Posted on 2009-07-09
6
446 Views
Last Modified: 2012-05-07
I have buit a questionnaire, and have a problem with the values being cleared after the user clicks on asp button.

This is what I have:
I have 1 form 1 page divided into sections ( step1, step2, step3, etc.) each section (step) is a table enclosed in a <div id="step#" runat="server">
In the code behind aspx.vb page on page load I have

If page.ispostback() then
' do nothing
else
step2.visible = false
step3.visbile = false
etc.
etc
At the bottom of each section I have a asp button btn_continue1, btn_continue2, etc. As a user clicks on the continue button depending on step, the last step will hide and the next step will show using step#.visible = true ( in the code behind).

The problem I have is if a user fills out step2, but then hits the back button to step1 and then hits the continue button to step2; the values they previously filled out on step2 are now cleared.

Why is this happening?
0
Comment
Question by:jml12906
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 4

Expert Comment

by:neil_squires
ID: 24820017
I think this is because of the way the browser works.  When they are on step one and fill out the form, the browser knows what they entered.  When the go to step 2 and fill it out, the browser will know the answeres for page 1 and 2.  However, if the user uses the back arrow, the previous page is loaded, before the values to page 2 were entered.

One solution is to train your users to not use the back button.  Another way would be to set up a different data flow to your page.  Something that comes to mind is the Wizard control.  You can have them step through multiple steps with a familiar look and feel and you can only get to the next page by completing the previous.

Does this help?
0
 
LVL 12

Expert Comment

by:funwithdotnet
ID: 24820033
If the user is clicking on the browser's Back button, the viewstatealso goes 'Back'. To prevent this from happening, record values to and populate controls from a session variable or alternate mechanism instead of viewstate.
0
 
LVL 6

Expert Comment

by:M3mph15
ID: 24820811
HI,

I think it might have something to do with using .visible = false. Try using a css class where the display property is set to none. e.g.:

<style>
.hidden
{
    display: none;
}
</style>

step2.cssclass = hidden
0
Salesforce Has Never Been Easier

Improve and reinforce salesforce training & adoption using WalkMe's digital adoption platform. Start saving on costly employee training by creating fast intuitive Walk-Thrus for Salesforce. Claim your Free Account Now

 

Author Comment

by:jml12906
ID: 24823095
I tried the control.attribute.add("Style", "Display:none") with no luck either..... I think funwithdotnet is right on the money, I started playing with the populating the controls from a session and that seems to work if lets say i have 2 tabs open 1st tab being the questionnaire and 2nd tab being google or whatever. If I close out of the 1st tab ( questionnaire ) but keep the 2nd tab open and then reopen the questionnaire the values are being populated via session.
I am storing and reloading the session as so:
on continue button click:
Dim qa1 As String = rbl_gh1.Text

' Save to session
Session("sqa1") = qa1
and then on step# load

If Page.IsPostBack() Then

rbl_gh1.Text = Session("sqa1")


End If
But I still have the problem on reloading each step section with the values using  session...Any ideas?
 
0
 
LVL 12

Accepted Solution

by:
funwithdotnet earned 500 total points
ID: 24828658
I'm not exactly sure what the issue is, however I included some sample code, just in case.

Some other practical possibilities:
Cookies can also be handy to save values and can persist beyond a session.
A key-value pair collection can be used to store keyed values in a single session variable.

 


' After determining which step to display ...
 
If Step1.Visible Then
' populate Step1 form controls from session variables 
  If Session.Item("step1var1") IsNot Nothing Then
    Step1TextBox1.Text = Session.Item("step1var1") 
  End If
ElseIf Step2.Visible Then
  If Session.Item("step2var1") IsNot Nothing Then
    Step2TextBox1.Text = Session.Item("step1var1") 
  End If
Elseif ...
 
End If
 
' After last step, use the session values to 
' process the data from the questionnaire. 

Open in new window

0
 

Author Closing Comment

by:jml12906
ID: 31601918
Thanks for your help again! Still playing with the session variables to get it right, but I feel you are dead on the money.
0

Featured Post

Secure Your Active Directory - April 20, 2017

Active Directory plays a critical role in your company’s IT infrastructure and keeping it secure in today’s hacker-infested world is a must.
Microsoft published 300+ pages of guidance, but who has the time, money, and resources to implement? Register now to find an easier way.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource. Example of web.sitemap file: (CODE) Sample code to add to the page menu: (CODE) Running the application, we wi…
User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question