2009-05-01 4 views
1

Я попытался установить его в коде, а также в разметке, но при нажатии кнопки «Далее» страница проверена, я хочу превзойти эту от происходящего и контроля, когда валидация должна произойти, а когда нет. Любые предложения или примеры кода будут оцененыУправление Wizard в ASP.NET - Как установить свойство NextButton Causesvalidation на false

+1

ли это работать? Лемм знает, нужна ли вам дополнительная помощь! ;-) – Cerebrus

ответ

5

Самый простой способ сделать это - удалить все элементы проверки правильности от WizardStep, в которых проверка должна быть пропущена.

Однако, если вам нужна расширенная функциональность, вам необходимо установить свойство CausesValidation свойств кнопок Next/Previous в вашем StepNavigationTemplate вручную. Элемент управления ASP.NET Wizard не предоставляет свойства, позволяющие напрямую обращаться к элементам управления в NavigationTemplates, а также не предоставляет никаких свойств для доступа к NavigationTemplate. Таким образом, мы должны полагаться на метод FindControl, чтобы выполнить весь поиск.

Удобная часть информации, которую я обнаружил при исследовании этой проблемы, состояла в том, что во время выполнения StepNavigationTemplate имеет внутренний тип ASP.NET, называемый StepNavigationTemplateContainer, и имеет идентификатор «StepNavigationTemplateContainerID». Это позволило мне найти StepNavigationTemplate и, следовательно, кнопку «Далее».

код следующим образом:


protected void Wizard1_ActiveStepChanged(object sender, EventArgs e) 
{ 
    int step = Wizard1.ActiveStepIndex; 

    // Disable validation for Step 2. (index is zero-based) 
    if (step == 1) 
    { 
    ToggleValidation(false); 
    } 
    else // Enable validation for subsequent steps. 
    { 
    ToggleValidation(true); 
    } 
} 

private void ToggleValidation(bool flag) 
{ 
    WebControl stepNavTemplate = this.Wizard1.FindControl("StepNavigationTemplateContainerID") as WebControl; 
    if (stepNavTemplate != null) 
    { 
    Button b = stepNavTemplate.FindControl("StepNextButton") as Button; 
    if (b != null) 
    { 
     b.CausesValidation = flag; 
    } 
    } 
} 
+0

Событие Wizard1_ActiveStepChanged не вызывает увольнения. – chugh97

+1

Вам придется подключить его, приятель! Используйте вкладку «Событие» окна «Свойства Visual Studio». – Cerebrus

+0

Я подключил его, но это событие не стреляет. Должен ли я увеличивать ActiveStepIndex в eventhanlder NextButtonClick, чтобы он срабатывал? – chugh97