I enjoy working with the ASP.NET Wizard control – it’s one of the more useful controls available, and there always seems to be a place for a wizard in the custom apps I’ve written. Over time I’ve developed a helper method that makes it easier to do non-linear jumps from step to step.
GetIndexFromStep(WizardStepBase step)
Often, in a NextButtonClick event handler for a Wizard, you need to figure out what the current step is that you are on, based on the WizardNavigationEventArgs e.CurrentStepIndex property. Here is a helper method to enable you to do that:
/// <summary>
/// Returns the index of a particular wizard step in the WizardSteps collection
/// </summary>
/// <param name="step">The step whose index number you want</param>
/// <returns></returns>
private int GetIndexFromStep(WizardStepBase step)
{
return step.Wizard.WizardSteps.IndexOf(step);
}
You can also package it up as an extension method (.NET 3.5) off of the Wizard or WizardStepBase object:
using System.Web.UI.WebControls;
/// <summary>
/// Extensions for ASP.NET Wizard Control Objects
/// </summary>
public static class WizardExtensions
{
/// <summary>
/// Gets the index of a particular wizard step.
/// </summary>
/// <param name="wizard">The current Wizard</param>
/// <param name="step">The step whose index number you want</param>
/// <returns></returns>
public static int GetIndexFromStep(this Wizard wizard, WizardStepBase step)
{
return wizard.WizardSteps.IndexOf(step);
}
/// <summary>
/// Gets the index of this wizard step.
/// </summary>
/// <param name="step">This step</param>
/// <returns></returns>
public static int GetIndex(this WizardStepBase step)
{
return step.Wizard.WizardSteps.IndexOf(step);
}
}
If you’ve given your wizard steps specific IDs, then you can use them strongly typed in a NextButtonClick event:
protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
if (e.CurrentStepIndex == GetIndexFromStep(step1))
{
// We are on step #1
// Validate...
// Skip to step 3
Wizard1.ActiveStepIndex = GetIndexFromStep(step3);
}
}














