Postback not working, Pages not maintaining state

Discussion in 'ASP .Net' started by Tom wilson, Feb 14, 2005.

  1. Tom wilson

    Tom wilson Guest

    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. :)
     
    Tom wilson, Feb 14, 2005
    #1
    1. Advertising

  2. Tom wilson

    Riki Guest

    Tom wilson wrote:
    > 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


    I think the problem is that you add the literal
    before you build the rest of the page.
    This causes all controls on the rest of the page
    to get another ID. Which causes postback to fail.
    I suggest moving the If block to just before End Sub.

    --

    Riki
     
    Riki, Feb 14, 2005
    #2
    1. Advertising

  3. Tom wilson

    Tom wilson Guest

    That's it.

    You're right, I'm clearing the placeholder and re-creating the
    controls. I added an "AddError" routine that inserts my error texts
    into the placeholder order rather than rebuilding the page from
    scratch. I never would have thought of that, THANKS!!!! The page
    works.

    Tom


    On Mon, 14 Feb 2005 15:47:38 +0100, "Riki" <> wrote:

    >Tom wilson wrote:
    >> 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

    >
    >I think the problem is that you add the literal
    >before you build the rest of the page.
    >This causes all controls on the rest of the page
    >to get another ID. Which causes postback to fail.
    >I suggest moving the If block to just before End Sub.
     
    Tom wilson, Feb 14, 2005
    #3
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?Utf-8?B?Tm92aWNl?=
    Replies:
    1
    Views:
    496
    John Saunders
    Sep 24, 2004
  2. Tom wilson
    Replies:
    2
    Views:
    2,657
    Tom wilson
    Feb 11, 2005
  3. =?Utf-8?B?RGVlcHNvbiBUaG9tYXM=?=

    Dropdown is maintaining itz state after postback

    =?Utf-8?B?RGVlcHNvbiBUaG9tYXM=?=, May 30, 2006, in forum: ASP .Net
    Replies:
    1
    Views:
    500
    Brock Allen
    Jun 1, 2006
  4. =?Utf-8?B?RGVlcHNvbiBUaG9tYXM=?=

    Dropdown is not maintaining itz state after postback

    =?Utf-8?B?RGVlcHNvbiBUaG9tYXM=?=, May 30, 2006, in forum: ASP .Net
    Replies:
    5
    Views:
    638
    Mark Rae
    May 31, 2006
  5. muzzy
    Replies:
    1
    Views:
    270
    Jan Limpens
    Nov 7, 2003
Loading...

Share This Page