How to handle webpart with multiple postbacks (screens)?

Hello,

I am creating a webpart that spans multiple screens. The 3 screens for the end user are,

1. Enter basic information
2. Confirm entered values screen. If you want to make changes, you can go back to screen 1 or move on to screen 3.
3. Success page.

Having written many two screen and one screen webparts before, I am fairly confident that I can get the controls I need rendered just fine.

What I am missing is the logic that goes from screen 1 to screen 3 while preserving all values so that screen 3 can store the values successfully in a list.

What is the best approach for doing this?

Thanks!


freezegravityAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
navtej_dhillonConnect With a Mentor Commented:
You can do this using ViewState or QueryString or best option could be Ajax, where you just keep changing the inner HTML of webpart depending upon user action.

Alternate way of show/hide could be achieved by creating 3 separate div's with requisite HTML and loading the div on demand.

Regards,
Amit
0
 
Jamie McAllister MVPConnect With a Mentor SharePoint ConsultantCommented:
Viewstate is the way to do this. You could also use Session if it's been enabled on your SharePoint server.

http://vspug.com/chadclarkesmossblog/2007/10/10/custom-web-part-building-state-management-tips-and-tricks/
0
 
freezegravityAuthor Commented:
Specifically, See the attached code. When I click Button1, the screen goes blank, Button 2 isn't even loaded.

Can you assist with this?
protected override void CreateChildControls()
{
    this.Controls.Add(Button1);
}

protected void Button1_click(object sender, Eventargs e)
{
    Button1.Visible = false;
    this.Controls.Add(Button2);
}

Open in new window

0
 
Jamie McAllister MVPSharePoint ConsultantCommented:
Create your control instances and add them to the controls collection in CreateChildControls. You can control the conditionality of their display in the Render method, or if it's going to be a lot of [memory] overhead do the conditionality in CreateChildControls so their instances are never created at all.

I wouldn't tend to add controls to the controls collection outside of there.

Further, you could alter the CSSClass property of the controls in your click events and control visibility with CSS.

0
 
freezegravityAuthor Commented:
I am not sure what you mean. Can you show by code sample?

I believe the button event handler can't do much of anything because at that point, CreateChildControls has already been executed and all controls already rendered. How do I get around this problem?

Thanks!
0
All Courses

From novice to tech pro — start learning today.