IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[VB.NET] - RegularExpressionValidator pour gérer les dates


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut [VB.NET] - RegularExpressionValidator pour gérer les dates
    Voilà,

    je voudrais voir si le format de ma date est correcte en utilisant RegularExpressionValidator et pas de DateTime.ParseExact(maDate.Text, "MM/dd/yyyy", Nothing) comme j'ai pu le voir sur d'ancien post.

    La raison est que j'effectue cette vérification pendant un enregistrement et je ne veux pas que les données qui seront traiter avant mon élément date soit enregistrer alors que ma date va lever une exception.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim testFormat As System.Web.UI.WebControls.RegularExpressionValidator
    testFormat = New RegularExpressionValidator
    testFormat.ValidationExpression = "mm/dd/yyyy"
    testFormat.ControlToValidate = maDate.ID
    je voudrais avoir quelque chose comme cela dans le principe.
    mais j'ignore réellement si RegularExpressionValidator est adapté à cette vérification. Sinon si vous avez une autre idée ...
    Merci d'avance

  2. #2
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Points : 220
    Points
    220
    Par défaut
    je pense q tu t'embetes pr rien ...

    le plus simple est de contruire un objet date ... si ca marche c'est q ta date est valide et si il y a une exception c'est qu'elle est pas bonne ...

    de toute facon ca reviens au meme qu'avec ton expression régulière sauf que tu t'embetes moins car avec une regex ... vas y pour gérer les années bissextiles (regle des 100 et 400 années - ca se fait mais c'est chiant)

  3. #3
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 296
    Points
    7 296
    Par défaut
    de mon coté j ai mélénla methode de creation de date avec une autre en javascript.

    lorsque mon champ ne contient pas une date valide, il est vidé.

    quand il est vide, mon bouton est desactivé ;-)

  4. #4
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    oui, mais le problème.

    C'est que si j'attend la levé d'une exception cela veut dire que si je suis en phase d'enregistrement les autres élements qui auront été gérer avant l'erreur seront quand à eux bien enregistrer.

    moi, je cherche une solution qui soit gérer du coté client, pour éviter ce problème. Bon, je veux bien du javascript mais je ne suis pas une bête de javascript mais je suis presque sur que RegularExpressionValidator pourrait être une solution.

  5. #5
    Membre du Club Avatar de Agoye
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Points : 68
    Points
    68
    Par défaut
    bonjour

    moi je gère les date de la manière suivante (html de ma page vb)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	<asp:textbox id="txtDateNais" runat="server" maxlength="10" Width="75px"></asp:textbox>
    	<asp:RequiredFieldValidator id="DateNaisRequired" Runat="server" ControlToValidate="txtDateNais" ErrorMessage="Date de naissance obligatoire" Display="Dynamic"></asp:RequiredFieldValidator>
    	<asp:CompareValidator id="cvDate" runat="Server" Operator="DataTypeCheck" Type="Date" ErrorMessage="Date de naissance invalide" ControlToValidate="txtDateNais" Display="Dynamic" />
    en fait le formulaire ne peut être validé tq la date n'est pas valide
    je ne sais pas si ça répond à la question...
    @+

  6. #6
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    on s'approche ...
    moi maintenant je veux faire cela en dynamique donc je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If Not monValidateur.CanConvert(maDate.Text, ValidationDataType.Date) Then
           monValidateur.Type = ValidationDataType.Date
           monValidateur.ErrorMessage = "cette date n'est pas correctement écrite"
           monValidateur.ControlToValidate = maDate.ID
           Me.Controls.Add(monValidateur)
    End If
    mais il me dit erreur:
    La valeur '' de la propriété ValueToCompare de '' ne peut pas être convertie en type 'Date'.

    bon on s'approche, je dois faire une tite betise mais où? Et est ce que j'utilise bien ce CompareValidator?

  7. #7
    Membre du Club Avatar de Agoye
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Points : 68
    Points
    68
    Par défaut
    a mon avis la valeur du controltovalidate n'est pas correcte
    Citation Envoyé par karibouxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
           monValidateur.ControlToValidate = maDate.ID
    je pense que ça devrait être un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
           monValidateur.ControlToValidate = madate
    si madate est l'id de ton champs
    enfin je ne suis pas trop sur!!!
    désolé

  8. #8
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    Non, maDate est un textbox et maDate.ID c'est son identifiant. Si je ne peux pas faire comme tu dis, controlToValidate attend un string et non un textbox.

    Sinon pour mon erreur, elle n'est plus là mais ça ne marche pas encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Dim monValidateur As New System.Web.UI.WebControls.CompareValidator
         monValidateur.ErrorMessage = "cette date n'est pas correctement écrite"
         monValidateur.ControlToValidate = maDate.ID
         Me.Controls.Add(monValidateur)
    mais le problème c'est que mon validator ne filtre rien ... je peux écrire nimporte koi il ne se passe rien

    donc ça avance mais c'est pas encore ça

  9. #9
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    En gros, ce que je veux c'est une fonction javascript ou un élement existant du style CompareValidator dans le code behind qui me permettrait de bloquer tout enregistrement dans directement sans retour vers le serveur.

    Ca doit exister, j'en suis sur car on peut le faire mais en l'écrivant en dure dans la page ascx...

  10. #10
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Tu as essayé de mettre EnableClientScript = true dans les propriétés de ton validator?
    Tu as bien mis un ValidationSummary dans ton .aspx?

  11. #11
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    maintenant avec ce code, dès que j'ecris quelque chose dans mon textbox (maDate) et bien l'erreur est soulevé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    monValidateur.ErrorMessage = "cette date n'est pas correctement écrite"
    monValidateur.ControlToValidate = maDate.ID
    monValidateur.EnableViewState = True
    monValidateur.Display = ValidatorDisplay.Dynamic
    CelluleControl.Controls.Add(monValidateur)
    et je rappelle que tout est dynamique donc je n'ai rien dans mon aspx

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 60
    Points
    60
    Par défaut
    Salut
    Arrete de te casser les pieds, voila d'ou tu peux telecharger une dll, il suffit juste de l'integrer dans ta page, comme ça l'utilisateur ne pourra pas entrer une date invalide, et tu peux faire bcp de chose avec.

    http://www.eworldui.net/CustomContro...ndarPopup.aspx

    Merci Verboz

    Amicalement Verboz

  13. #13
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    Merci pour ton lien, je mets cela de coté

    Mais j'ai trouvé !!!!! enfin ...

    voici le code pour que le format date soit géré dans le code behind:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim ControleFormatDate As New CompareValidator
    ControleFormatDate.ErrorMessage = "Le format de date n'est pas correct !"                            ControleFormatDate.Operator = ValidationCompareOperator.DataTypeCheck
    ControleFormatDate.Type = ValidationDataType.Date
    ControleFormatDate.ControlToValidate = maDate.ID
    en tout cas je suis surpris que personne n'utilise cela enfin bref voilà c'est RESOLU

  14. #14
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par karibouxe
    Voilà,

    je voudrais voir si le format de ma date est correcte en utilisant RegularExpressionValidator et pas de DateTime.ParseExact(maDate.Text, "MM/dd/yyyy", Nothing) comme j'ai pu le voir sur d'ancien post.

    La raison est que j'effectue cette vérification pendant un enregistrement et je ne veux pas que les données qui seront traiter avant mon élément date soit enregistrer alors que ma date va lever une exception.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim testFormat As System.Web.UI.WebControls.RegularExpressionValidator
    testFormat = New RegularExpressionValidator
    testFormat.ValidationExpression = "mm/dd/yyyy"
    testFormat.ControlToValidate = maDate.ID
    je voudrais avoir quelque chose comme cela dans le principe.
    mais j'ignore réellement si RegularExpressionValidator est adapté à cette vérification. Sinon si vous avez une autre idée ...
    Merci d'avance

    salut karibouxe, j utilise également les validator mais j pense que ce que tu voulais etais : ValidationExpression="\d{1,2}\/\d{1,2}/\d{4}"
    voila je trouve que le RegularExpressionValidator est meilleur que le CompareValidator dans ce cas a plus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gérer les dates avec SQL Server 2000
    Par saby dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/01/2006, 18h06
  2. Réponses: 5
    Dernier message: 28/11/2005, 09h52
  3. Réponses: 5
    Dernier message: 25/07/2005, 09h29
  4. Méthode simple pour gérer les collisions
    Par Hyoga dans le forum OpenGL
    Réponses: 2
    Dernier message: 19/02/2005, 13h43
  5. [Modèle Relationnel] gérer les dates
    Par allowen dans le forum Schéma
    Réponses: 10
    Dernier message: 13/10/2004, 19h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo