Как перейти к определенному шагу элемента управления Wizard в ASP.NET - PullRequest
1 голос
/ 06 марта 2012

У меня есть элемент управления Wizard на странице ASP.NET. Я пытаюсь предоставить ссылки обратно на отдельных WizardStep с. Я не могу найти информацию о том, как это сделать.

Вот код, который поможет визуализировать мою проблему

<asp:Wizard runat="server" ID="Wizard">
    <HeaderTemplate>
        <ul>
            <li><a href="<%=LinkToTheFirstStep %>">Step 1</a></li>
            <li><a href="<%=LinkToTheSecondStep %>">Step 2</a></li>
        </ul>
    </HeaderTemplate>
    <WizardSteps>
        <WizardSteps runat="server" ID="WizardStepPersonal">
        </WizardSteps>
        <WizardSteps runat="server" ID="WizardStepTravel">
        </WizardSteps>
    </WizardSteps>
</asp:Wizard>

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Вы можете просто указать переменную строки запроса, например? Step = 1, и проверить ее при загрузке страницы, а затем установить мастер следующим образом:

Wizard.ActiveStepIndex = int.Parse(Request["step"]);

Конечно, с еще большей проверкой ошибок.

Редактировать: Извините, ActiveStepIndex принимает и int, и я изначально пытался привести строку к int.

0 голосов
/ 06 марта 2012

Вы можете использовать asp:Menu

Страница

<asp:Menu ID="MyWizardMenu" Orientation="Horizontal" OnMenuItemClick="MyWizardMenu_MenuItemClick" runat="server">
    <Items>
        <asp:MenuItem Text="One" Selected="true" Value="0"></asp:MenuItem>
        <asp:MenuItem Text="Two" Value="1" ></asp:MenuItem>
        <asp:MenuItem Text="Three" Value="2"></asp:MenuItem>
    </Items>
</asp:Menu>

<asp:Wizard ID="MyWizard" runat="server" OnNextButtonClick="MyWizard_NextButtonClick"  OnPreviousButtonClick="MyWizard_PreviousButtonClick" DisplaySideBar="false">
    <WizardSteps>
        <asp:WizardStep ID="one" Title="One" runat="server">One</asp:WizardStep>
        <asp:WizardStep ID="two" Title="Two" runat="server">Two</asp:WizardStep>
        <asp:WizardStep ID="three" Title="Three" runat="server">Three</asp:WizardStep>
    </WizardSteps>
</asp:Wizard>

Код позади

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        MyWizard.ActiveStepIndex = 0;
    }
}

protected void MyWizardMenu_MenuItemClick(object sender, MenuEventArgs e)
{
    int index = Int32.Parse(e.Item.Value);
    MyWizard.ActiveStepIndex = index;
}

protected void MyWizard_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
    MyWizardMenu.Items[e.NextStepIndex].Selected = true;
}

protected void MyWizard_PreviousButtonClick(object sender, WizardNavigationEventArgs e)
{
   MyWizardMenu.Items[e.CurrentStepIndex - 1].Selected = true;
}

Должна быть возможность привязать MyWizard.WizardSteps к MyWizardMenu.DataSource (чтобы избежать жесткого кодирования ваших шагов к элементам навигации), но я пока не получил этого, потому что просто приведение к IHierachicalEnumaration недостаточно.

...