Validation d'un contrôle utilisateur

SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010 - 20 nov. 2008 à 08:54
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010 - 21 nov. 2008 à 09:37
Bonjour,


Dans un formview d'inscription, j'ai un contrôle Utilisateur dont une propriété ("ResteAPayer") doit être à 0 pour que l'inscription soit validée.


Voici l'extrait du code du contrôle utilisateur :



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 





<ValidationPropertyAttribute("ResteAPayer")> PartialClass MonControleUtilisateur





Inherits
System.Web.UI.UserControl






 






Puis plus loin :






   
Public
Property ResteAPayer()






       
Get







            _ResteAPayer = CalculerReste() 'sub qui renvoie un Double






           

Return
_ResteAPayer






       
End
Get







       
Set(ByVal value)






            _ResteAPayer = value






       
End
Set






End

Property







 





Je mets dans la page un CompareValidator avec la propriété controlToValidate MonControleUtilisateur.ID et les autres propriétés (dont le ValidationGroup du bouton d'inscription)...



 




Tout marche bien :


le valideur affiche bien le message d'erreur si la propriété ResteAPayer n'est pas nulle,


au débogage, Page.IsValid renvoie bien False, 
  mais ça ne bloque pas l'inscription, les instructions d'inscription s'exécutent quand même ...



 




J'ai du insérer le code




       
ElseIf e.CommandName = "Updater"Then






           
If
Not
Me.IsValid ThenExitSub

Je précise que tout ça est dans un UpdatePanel... hum hum pourtant, j'ai tout fait ce qu'il faut pour que les valideurs marchent avec ajax.
Comment faire pour que les valideurs bloquent ?


Merci de vos lumières

5 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
20 nov. 2008 à 22:38
Bonsoir,

le code que tu montres se trouve ou ? dans le page_load ? si oui, c'est normal ? si c'est dans le btn_click, de mémoire c'est normal si tu ne met pas de validationgroup à ton button.

Sinon je te conseille quand meme de toujours faire un page.validate puis un page.IsValid, ca ne coute pas grand chose et c'est plus prudent.

<hr />Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
21 nov. 2008 à 06:16
bonjour,
merci de ta réponse.
le code cité plus haut est simplement en tête de la classe

<ValidationPropertyAttribute("ResteAPayer")> Partial Class MonControleUtilisateur
InheritsSystem.Web.UI.UserControl<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

puis dans les propriétés :

PublicProperty ResteAPayer ()

 as Double 
 etc...

le bouton d'enregistrement n'est pas dans le ControlUtilisateur, mais dans le formView qui le contient   : un classique bouton avec CommandName "Insert" ou "Update".

En fait, je ne sais pas quand déclencher le page.validate car je le confirme, la commande s'exécute malgré un Page.IsValid =False
Je précise que j'ai ajusté le ValidationGroup, et malgré ça...

J'ai également retiré le Controle utilisateur de l'UpdatePanel, aucun changement.
Je me souviens vaguement avoir déjà rencontré et résolu ce problème mais je bute.
ce n'est cependant pas très grave, puisque ça marche avec
If

NotMe.IsValid ThenExitSub
Cependant, j'aurais aimé que le script-client fonctionne, question d'élégance... et de rapidité.
SuperBouly
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
21 nov. 2008 à 09:19
le script client ne peux pas fonctionner puisqu'il s'agit d'une variable coté serveur ...

le page.Validate est à executer juste avant le page.isvalid.

page.Validate();
if (page.IsValid()){
    // do
}

Pour le validationGroup, normalement si ton button a un validationgroup et ton contrôle aussi alors ca devrait pas déclencher le button_click, mais je suis pas sur de moi.

<hr />Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
21 nov. 2008 à 09:28
SuperBouly
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
21 nov. 2008 à 09:37
oui, bien vu pour la variable côté serveur
Pour le validationGroup, je ne vois pas comment attribuer un ValidationGroup à un UserControl.

Pour l'instant, j'ai mis une textBox (style position:absolute; top:-3000px;) qui prend la valeur de mon UserControl au moment du calcul serveur. Un CompareValidator surveille sa valeur, les deux sont du bon ValidationGroup et en dehors de l'UserControl De cette façon, je bénéficie de la validation-client sur la textbox, au moins au moment de l'inscription.
En attendant + satisfaisant...
SuperBouly
0
Rejoignez-nous