Открыть страницу ASP.Net, содержащую мастера, на другом шаге мастера, отличном от начального шага по умолчанию? - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть страница ASP.Net Forms, содержащая следующий (упрощенный) <asp:Wizard /> элемент управления. Теперь мне нужно изменить эту страницу, чтобы при загрузке она отображала последний шаг.

Можно ли обойтись без переупорядочения шагов мастера (чего я бы не хотел делать)?

<asp:UpdatePanel runat="server" ID="updpanHeader" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Wizard ID="Wizard1" runat="server" DisplaySideBar="false" 
          Style="width: 100%"
          NavigationStyle-CssClass="invisible"
          OnNextButtonClick="Wizard1_NextButtonClick"
          OnActiveStepChanged="Wizard1_ActiveStepChanged">
            <WizardSteps>
                <asp:WizardStep ID="WizardStep1" runat="server" Title="Step 1"
                  StepType="Start">
                    ... wizard form controls for page 1 ...
                </asp:WizardStep>
                <asp:WizardStep ID="WizardStep2" runat="server" Title="Step 2"
                  StepType="Step">
                    ... wizard form controls for page 2 ...
                </asp:WizardStep>
                <asp:WizardStep ID="WizardStep3" runat="server" Title="Step 3"
                  StepType="Step">
                    ... wizard form controls for page 3 ...
                </asp:WizardStep>
            </WizardSteps>
        </asp:Wizard>
    </ContentTemplate>
</asp:UpdatePanel>



Я попытался поменять местами StepType первого и последнего шагов.

Я также пытался изменить ActiveStepIndex в методах Page_Load и Page_LoadComplete, что работает ..

void Page_Load(object sender, EventArgs e)
{
    Wizard1.ActiveStepIndex = (Wizard1.WizardSteps.Count - 1);
}

.. но заставляет Internet Explorer отображать предупреждение сценария: " В сценарии на этой странице произошла ошибка. Ошибка: объект ожидается "

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 22 февраля 2011

Я могу ошибаться, но я думаю, что вы хотите активировать индекс с помощью переопределения OnInit, иначе все постбэки будут вызывать Page_Load.

Также я считаю, что вы хотите использовать команду MoveTo вместо установки индекса. Недостатком является то, что вы должны использовать объект шага, но вы можете легко получить это из Wizard.WizardSteps Я полагаю.

, например

private override void OnInit(EventArgs e)
{
  this.Wizard1.MoveTo(this.WizardStep3);

  base.OnInit(e);
}

Хотя я могу ошибаться ... Пожалуйста, кто-нибудь поправит меня, если я.

...