Whidbey’s New Wizard Control Adds Navigational Power

SP.NET v2.0 adds many new concepts and controls beyond those shipped in version 1.1. One of these is the Wizard control, which can simplify your life when you need to implement a “step by step” interface style to capture data. The Wizard provides built-in navigation capability that lets you make logical field groupings for each step in a single aspx page where the process would normally require multiple steps (and complicated logic or multiple pages). The Wizard control uses ViewState (.NET’s built-in method for maintaining control values between requests) to handle the data each time the Wizard posts data back to the server, thus reducing your work. Further, you can use customizable templates to tailor the display for each step of the wizard.

Capturing Customer Information
The sample Wizard application captures customer information details such as name, gender, address, and preferred notifications. Typically, the process would require a long input form or several pages. Figure 1 shows a database-table view of the fields the application should capture.

Add Template Definitions
The HeaderTemplate, StartNavigationTemplate, FinishNavigationTemplate, SideBarTemplate, and StepNavigationTemplate help you configure the Header, Start, Finish, Sidebar, and intermediate steps of the Wizard respectively. You add these templates within the section.

The HeaderTemplate is the simplest. To use it, add the HeaderTemplate definition shown in Listing 2.

Listing 2 contains nothing remarkable, just HTML declarations for a table with header text and an image. The header content will appear on each screen except the screen where steptype is Complete. Figure 6 shows how adding a header template changes the Start screen display. Remember to copy any image files to the image folder for your project, which you’ll find under the root folder.

Handling Validation and Events
To validate user inputs, you use the new ValidationGroup property. The property helps you validate control values within a particular grouping. Controls that inherit from BaseValidator expose ValidationGroup as a string property. To group controls, assign the same string value to ValidationGroup for all controls you want to place in that group. Then, assign the same string value to the ValidationGroup property of the Validation controls (such as RequiredFieldValidator, etc) that you’re using to validate the content, and to the control that posts the content?usually a button or link.

For example, the sample application declares RequiredFieldValidator validation controls, and associates them with the mandatory fields, and declares a CompareValidator to validate the birthdate entry. All the validation and field controls have the same ValidationGroup value?”customervalidate.” In addition, the Next and SideBar button controls ValidationGroup property have this value. Doing that ensures that all the controls associated with that ValidationGroup value get validated whenever the user clicks a sidebar link or the Next button.

You need to add some server side event handlers to handle the record insertion. The following code fragment associates the handlers with specific events.


I’ve used Trace statements in the sample code events to help you follow the event sequence. You can view the trace information by adding the trace=true directive to the page and then executing the application.

Table 3 describes the events used and a description stating when the event occurs and, where appropriate, how that event gets handled in the sample application.

Table 3. Wizard Events: The table contains a list and description of the Wizard events used in the sample application.




Fired for each step of wizard, since each step is a differentview. This occurs between the Begin Init and End init step, effectivelybefore the Init event executes.

Note: For the full server side code, refer tothe sample project that accompanies this article.


Fired when a user clicks the “NextButton” in any step.

Action: In the sample, theevent calls a “ProcessHeader” method. This method gets a collectionof all the WizardSteps as a WizardStepCollection using the WizardSteps (seeListing 1 for definitions) property of the wizard. Use the CurrentStepIndex propertyof the WizardNavigationEventArgs to get the currentstep from thiscollection. You can also use the wizard’s ActiveStep property for the same purpose.Finally, set the label control in the header to display contentlike “Step 1 of 2…” etc.

Note: Though direct reference to controlidentifiers is possible, as examples there are instances in thesample using FindControl to get reference to control.


Fired when a user clicks the “FinishButton” in the WizardStep (steptype=”Finish”).

Action: Iterate through each WizardStep of the WizardStepCollection andcollect the user input from the controls. In case the validationfails for mandatory check, use wzCustomer.MoveTo(step) to move backto a specific step. If validation succeeds update the database.


Fired on click of sidebar links. In the sample calls the method”ProcessHeader”.


Fired on click of Previous buttons. Not implemented in this sample.

Commonly Used Wizard Methods and Properties
You may need to identify and process each step as users complete a Wizard. The WizardNavigationEventArgs parameter sent by the control for each event provides properties you can use to identify the specific step involved, such as the NextStepIndex and CurrentStepIndex properties. Use the WizardStepCollection property to access individual steps and their contents. You can also cause the Wizard to move to a particular step using the MoveTo method. Table 4 describes the some of the most commonly used Wizard methods and properties you’ll need.

Table 4. Common Wizard Properties and Methods: The table shows the most common properties and methods of the Wizard control.




Used to get the currentstep of the Wizard.


WizardStepCollection?Gives you the collection of all Steps.You can pass the index to the collection to get a particular step.For example: WizardStepCollection StepsCollection= wzCustomer. WizardSteps;WizardStep step = StepsCollection[1];

FinishStepButtonText, NextStepButtonText, PreviousStepButtonText,etc

These are used to set the display text values of the correspondingbuttons. There are properties for each buttons available in wizard.


A very important method that moves the wizard to the step mentioned.

SideBarStyle, NavigationButtonStyle, etc

TableItemStyles to configure styles for respective controls.

At this point, you’ve completed the Customer information sample. Run the sample to investigate the flow and experiment with the Wizard. If you want to actually post the data to a database, run the .sql file that accompanies the sample code.

You can simplify the process of developing complex multi-page user input forms using the innovative Wizard control. The Wizard handles the multi-page scenario within a single page, and provides templates for customizing the form pages’ appearance. The Wizard navigation model supports skipping steps or jumping directly to a specific step, while the event model provides fine-grained control over the form data, which is critical in these scenarios.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


The Latest

6 Web Resources for Coders

6 Online Coding Resources

One of the most rapidly growing job industries today is coding. As more and more of the world moves to a digital format, the demand for skilled coders continues to increase. With a high demand for the skillset, coders tend to be very well compensated for their work. Furthermore, coders

Malware Removal and Protection Software You Should Use in 2023 

The Best Malware Removal Software in 2023

In the modern world, computers are practically a necessity for every home. Computers give us access to vast amounts of information through the internet, as well as provide us with innovative programs and applications like social media, email, and much more. But with these benefits also come the threats of

Why Technology Literacy is So Important for Modern Workers 

Why Technology Literacy is So Important for Modern Workers 

Importance of Having Technology Literacy Today’s world is completely reliant on technological products and advancements. In the current technology-based era, it is crucial to have technology literacy. And these particular instances might be most suitable for the cases of modern workers dealing with modern equipment, especially in the construction sector. 

The Small Business & Data Analytics: What You Need to Know

The Small Business & Data Analytics: What You Need to Know

The objective of any business is to afford its community a product and create extra money for the services provided. Ideally, this always goes as planned, but at times when it doesn’t, having an extra eye on the data analytics of your small business may make a significant difference. Metrics

Break Into Tech Sales in 4 Easy Steps

Break Into Technology Sales in 4 Easy Steps

One of the fastest-growing industries of the 21st century is undoubtedly tech sales. Between innovations like computers, AI, social media, and more, tech is everywhere. And the demand continues to increase. With constant innovations and massive demand, tech sales have become an extremely lucrative industry. As such, there is no

©2023 Copyright DevX - All Rights Reserved. Registration or use of this site constitutes acceptance of our Terms of Service and Privacy Policy.