2009-05-28 6 views
0

J'ai un contrôle d'assistant dans mon projet asp.net 2.0, et il contient quelques étapes. La deuxième étape a une zone de texte avec un contrôle standardfieldvalidator obligatoire attaché à celui-ci. Lorsque l'utilisateur clique sur Suivant et que la case est vide, le validateur se plaint, tout est normal.Comment valider les champs lors de l'utilisation du contrôle de l'assistant asp.net?

Cependant, lorsque l'utilisateur utilise les étapes de la barre latérale pour passer à l'avant-dernière étape et clique sur Terminer, le validateur n'est pas déclenché et la zone de texte est vide. Dans mon back-end, j'ai ceci:

Protected Sub wizard_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles wizard.FinishButtonClick 
     If Page.IsValid Then 
      ... 
     Else 
      lblError.Text = "You missed some fields, please return and enter them" 
      e.Cancel = True 
     End If 
    End Sub 

(lblError est une étiquette sur la page complète, mais ce n'est pas vraiment la question)

Ce code ne fonctionne pas ...

Qu'est-ce que une bonne solution à ce problème? Retirer la barre latérale et ne pas l'utiliser? A peine la plus belle solution ...

+1

Je suggère personnellement d'éviter le contrôle de l'assistant comme la peste, mais c'est juste moi. – TheTXI

+0

Ça ne me dérangerait pas de l'abandonner, mais quelle est l'alternative? Le créer moi-même, en stockant tous les champs en session? On dirait une opération coûteuse en temps .. – Tominator

Répondre

0

Il est loin d'être parfait, mais je l'utilise maintenant cela comme une réponse:

Protected Sub wzrdAddEvent_SideBarButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles wzrdAddEvent.SideBarButtonClick 
     If e.NextStepIndex > (e.CurrentStepIndex + 1) Then 
      e.Cancel = True 
     End If 
    End Sub 

« si vous utilisez les étapes de la barre latérale, ne permettent un pas en avant au plus »

Questions connexes