2009-05-01 3 views
1

Ich habe versucht, es im Code und auch in der Markup, aber wenn der nächste Button geklickt wird, ist die Seite validiert, ich möchte prevnt dies vom Geschehen und Kontrolle, wann die Validierung stattfinden sollte und wann nicht. Alle Vorschläge oder Codebeispiele wären wünschenswertWizard Control in ASP.NET - So legen Sie die NextButton Causesvalidation -Eigenschaft auf false

+1

Hat es funktioniert? Lemme wissen, ob Sie zusätzliche Hilfe benötigen! ;-) – Cerebrus

Antwort

5

Der einfachste Weg, dies zu tun wäre, alle Validator-Steuerelemente aus der WizardStep, in denen Validierung übersprungen werden soll.

Wenn Sie jedoch erweiterte Funktionen benötigen, müssen Sie die CausesValidation Eigenschaft der Next/Previous-Tasten in Ihrem StepNavigationTemplate manuell einstellen. Das ASP.NET-Wizard-Steuerelement stellt keine Eigenschaften bereit, mit denen Sie direkt auf die Steuerelemente in den NavigationTemplates zugreifen können, und es werden auch keine Eigenschaften für den Zugriff auf das NavigationTemplate verfügbar gemacht. Also müssen wir uns auf die FindControl Methode verlassen, um alle Suchen durchzuführen.

Eine praktische Information, die ich während der Untersuchung dieses Problems fand, war, dass zur Laufzeit der StepNavigationTemplate von einem internen ASP.NET-Typ StepNavigationTemplateContainer genannt wird und eine ID "StepNavigationTemplateContainerID" hat. Dadurch konnte ich den StepNavigationTemplate und damit den Next Button finden.

-Code folgt:


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 Ereignis wird nicht ausgelöst.Viele Ideen? – chugh97

+1

Sie müssen es anschließen, Kumpel! Verwenden Sie die Registerkarte Ereignis des Fensters Visual Studio-Eigenschaft. – Cerebrus

+0

Ich habe es verdrahtet, aber das Ereignis wird nicht ausgelöst. Muss ich den ActiveStepIndex in NextButtonClick eventhanlder erhöhen, damit er ausgelöst wird? – chugh97

Verwandte Themen