By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,199 Members | 1,458 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,199 IT Pros & Developers. It's quick & easy.

Postback not working, pages not maintaining state - I entirely don't get it.

P: n/a
This is a huge problem. I'm going insane. I've tried to solve this
elsewhere and no one can suggest how to make this work. To me, this
should be a very basic thing to do.

I have an asp.net application that is a survey acceptor. The site is
to display a page of survey questions and accept the responses. It
builds the entire page dynamically from SQL Server tables. The idea
is that when a person submits their responses, if there are validation
errors, to reload the page with the error text under the question
heading. I have this working. Sort of.

- There are 3 questions, all required. I load the page and answer the
first question only and hit submit.
- The error texts show up! But the question I selected (radio) isn't
selected anymore.
- I choose the first question again and hit submit. The question
remains selected but the errror texts are gone.

This goes back and forth with each click of the button; errors and
noselection, selection and no errors, errors and no selection,
selection and no errors. I'm not understanding something. Here's the
basic flow of the page:

Private Sub Page_Load
BuildPage()
End Sub

Private Sub BuildPage()
' Code to build the page from SQL Server tables.
' Creates controls, HTML elements, a submit button and a handler for
the button click.
' Also checks an array for errors and displays error text:

If Me.IsPostBack = True Then
ErrorString = CheckForError(Q.ID)
If ErrorString <> "" Then
AddLiteral(ErrorString)
End If
End If
' Question text is placed here
' Controls (ie. radios) are placed here
End Sub

Private Sub Submit_Click
' Checks for errors in the page; ie. a question has not been answered.
' Loads an array of question ID's and the errors associated

If ErrorCount > 0 then
PlaceHolder1.Controls.Clear()
BuildPage()
else
response.redirect("ThankYou.aspx")
end if

end sub

So this is how I see this:

- Load the page, build its content in Page_Load
- Fill out, Submit. The server gets the page and executes the button
click code.
- The code checks for errors. Assume there is one.
- Above, Errorcount > 0. It rebuilds the page by clearing the
Placeholder and re-adding the controls. Since this is postback, it
inserts the error texts as it builds and it gets sent back to the
client.

But that's not right somehow because although I do get the error texts
inserted, the selections I did make are cleared. When I hit submit on
this page, it comes back with my selections and no errors. I'm told
that if I build the page in Page_Init, the control states will be
maintained but they aren't.

Where is my thinking going askew?

If it helps to admit I'm a newbie to asp.net and am an idiot then
please, make that assumption. :)
Nov 19 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
if you ever read a piece of sample code on ASP.NET, you will notice that
almost all Page_Load() event handler has a line of code like this:

Private Sub Page_Load()

If Not Page.IsPostBack Then
BuildPage() 'You only need to dynamically biuld the page when the
page is called the first time
Else
'Do something else if necessary when the page is posted back
'Or do nothing, leave processing to other server event handler, such
as Button_Click, DropDownList_SelectedIndexChanged...
End If

End Sub

"Tom wilson" <ye*******@nospam.com> wrote in message
news:uc********************************@4ax.com...
This is a huge problem. I'm going insane. I've tried to solve this
elsewhere and no one can suggest how to make this work. To me, this
should be a very basic thing to do.

I have an asp.net application that is a survey acceptor. The site is
to display a page of survey questions and accept the responses. It
builds the entire page dynamically from SQL Server tables. The idea
is that when a person submits their responses, if there are validation
errors, to reload the page with the error text under the question
heading. I have this working. Sort of.

- There are 3 questions, all required. I load the page and answer the
first question only and hit submit.
- The error texts show up! But the question I selected (radio) isn't
selected anymore.
- I choose the first question again and hit submit. The question
remains selected but the errror texts are gone.

This goes back and forth with each click of the button; errors and
noselection, selection and no errors, errors and no selection,
selection and no errors. I'm not understanding something. Here's the
basic flow of the page:

Private Sub Page_Load
BuildPage()
End Sub

Private Sub BuildPage()
' Code to build the page from SQL Server tables.
' Creates controls, HTML elements, a submit button and a handler for
the button click.
' Also checks an array for errors and displays error text:

If Me.IsPostBack = True Then
ErrorString = CheckForError(Q.ID)
If ErrorString <> "" Then
AddLiteral(ErrorString)
End If
End If
' Question text is placed here
' Controls (ie. radios) are placed here
End Sub

Private Sub Submit_Click
' Checks for errors in the page; ie. a question has not been answered.
' Loads an array of question ID's and the errors associated

If ErrorCount > 0 then
PlaceHolder1.Controls.Clear()
BuildPage()
else
response.redirect("ThankYou.aspx")
end if

end sub

So this is how I see this:

- Load the page, build its content in Page_Load
- Fill out, Submit. The server gets the page and executes the button
click code.
- The code checks for errors. Assume there is one.
- Above, Errorcount > 0. It rebuilds the page by clearing the
Placeholder and re-adding the controls. Since this is postback, it
inserts the error texts as it builds and it gets sent back to the
client.

But that's not right somehow because although I do get the error texts
inserted, the selections I did make are cleared. When I hit submit on
this page, it comes back with my selections and no errors. I'm told
that if I build the page in Page_Init, the control states will be
maintained but they aren't.

Where is my thinking going askew?

If it helps to admit I'm a newbie to asp.net and am an idiot then
please, make that assumption. :)

Nov 19 '05 #2

P: n/a
Oh yes, I've tried that:

Private Sub Page_Load(...
if Me.IsPostBack = False Then
BuildPage()
end if
end sub

The results:

1 - Load the page, fill out, submit.
2 - Blank page.

On Fri, 11 Feb 2005 12:54:58 -0700, "Norman Yuan"
<No*****@NotReal.not> wrote:
if you ever read a piece of sample code on ASP.NET, you will notice that
almost all Page_Load() event handler has a line of code like this:

Private Sub Page_Load()

If Not Page.IsPostBack Then
BuildPage() 'You only need to dynamically biuld the page when the
page is called the first time
Else
'Do something else if necessary when the page is posted back
'Or do nothing, leave processing to other server event handler, such
as Button_Click, DropDownList_SelectedIndexChanged...
End If

End Sub

"Tom wilson" <ye*******@nospam.com> wrote in message
news:uc********************************@4ax.com.. .
This is a huge problem. I'm going insane. I've tried to solve this
elsewhere and no one can suggest how to make this work. To me, this
should be a very basic thing to do.

I have an asp.net application that is a survey acceptor. The site is
to display a page of survey questions and accept the responses. It
builds the entire page dynamically from SQL Server tables. The idea
is that when a person submits their responses, if there are validation
errors, to reload the page with the error text under the question
heading. I have this working. Sort of.

- There are 3 questions, all required. I load the page and answer the
first question only and hit submit.
- The error texts show up! But the question I selected (radio) isn't
selected anymore.
- I choose the first question again and hit submit. The question
remains selected but the errror texts are gone.

This goes back and forth with each click of the button; errors and
noselection, selection and no errors, errors and no selection,
selection and no errors. I'm not understanding something. Here's the
basic flow of the page:

Private Sub Page_Load
BuildPage()
End Sub

Private Sub BuildPage()
' Code to build the page from SQL Server tables.
' Creates controls, HTML elements, a submit button and a handler for
the button click.
' Also checks an array for errors and displays error text:

If Me.IsPostBack = True Then
ErrorString = CheckForError(Q.ID)
If ErrorString <> "" Then
AddLiteral(ErrorString)
End If
End If
' Question text is placed here
' Controls (ie. radios) are placed here
End Sub

Private Sub Submit_Click
' Checks for errors in the page; ie. a question has not been answered.
' Loads an array of question ID's and the errors associated

If ErrorCount > 0 then
PlaceHolder1.Controls.Clear()
BuildPage()
else
response.redirect("ThankYou.aspx")
end if

end sub

So this is how I see this:

- Load the page, build its content in Page_Load
- Fill out, Submit. The server gets the page and executes the button
click code.
- The code checks for errors. Assume there is one.
- Above, Errorcount > 0. It rebuilds the page by clearing the
Placeholder and re-adding the controls. Since this is postback, it
inserts the error texts as it builds and it gets sent back to the
client.

But that's not right somehow because although I do get the error texts
inserted, the selections I did make are cleared. When I hit submit on
this page, it comes back with my selections and no errors. I'm told
that if I build the page in Page_Init, the control states will be
maintained but they aren't.

Where is my thinking going askew?

If it helps to admit I'm a newbie to asp.net and am an idiot then
please, make that assumption. :)


Nov 19 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.