Asp.net Wizard Control с динамическими шагами застревает

У меня есть элемент управления мастера, который должен использовать динамические шаги. У меня есть следующий код, который загружает динамические шаги (все это работает нормально). У меня есть 7 статических шагов.

protected override LoadViewState(object savedState)
{
    base.LoadViewState(savedState);

    int offset = 4;
    foreach(string stepName in this.ViewState["Steps"])
    {
        WizardStep step = new WizardStep();
        step.Title = stepName;
        this.Wizard1.WizardSteps.AddAt(step, offset); // LINE 1
        this.Wizard1.WizardSteps.Add(step); // LINE 2
        offset++;
    }
}

У меня есть две проблемы, когда я выполняю код и использую строку 1. Когда я перехожу к динамическому шагу, он не позволяет вам перейти к следующему (с помощью кнопки «Далее»). Кажется, это потому, что this.IsValid имеет значение false (но у меня нет элементов управления проверкой на странице). Кажется, он просто застрял на этой текущей странице.

Когда я запускаю с использованием строки 2, он снова добавляет шаги. Когда я нахожусь на первом динамическом шаге и нажимаю «Далее», я получаю сообщение об ошибке. ActiveViewIndex устанавливается равным «7». Он должен быть меньше текущего элемента управления представлением '7'. Для динамически добавляемых представлений убедитесь, что они добавляются до или в событии Page_PreInit.

Проблема со второй ошибкой заключается в том, что я не могу добавить динамические шаги в Page_PreInit, потому что мне нужен доступ к состоянию представления, чтобы узнать, сколько шагов нужно отрисовать.


person Adam S-Price    schedule 07.05.2010    source источник


Ответы (1)


Я нашел проблему. Поскольку шаги должны быть добавлены в событие Page_PreInit. Это означает, что я не могу использовать Viewstate, но теперь вместо этого я использую Session.

person Adam S-Price    schedule 07.05.2010