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 :

CompareValidator : écart max entre deux champs date [Débutant]


Sujet :

ASP.NET

  1. #1
    Membre du Club Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Points : 64
    Points
    64
    Par défaut CompareValidator : écart max entre deux champs date
    Salut à tous,

    Je reviens (encore !) vous embêter avec mes questions.

    J'ai actuellement un formulaire dans lequel on renseigne 2 dates dans des TextBox. J'ai mis en place un CompareValidator qui s'assure que la seconde date n'est pas antérieure à la première. Jusqu'ici tout va bien. A titre informatif, mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <asp:TextBox ID="txtDateDeb" runat="server"></asp:TextBox>
    <asp:TextBox ID="txtDateFin" runat="server"></asp:TextBox>
    <asp:CompareValidator ID="CompareValidatorDates" runat="server"
    	ControlToValidate="txtDateFin" ControlToCompare="txtDateDeb"
    	Type="Date" Operator="GreaterThanEqual"
    	ErrorMessage="Date de fin antérieure à la date de début">
    Je souhaiterais désormais ajouter un autre Validateur qui s'assure que l'écart entre ces deux dates n'est pas de plus de 7 jours.
    Y'a-t-il un moyen de le faire ainsi via un CompareValidator, ou suis-je obligé de passer par la validation côté serveur lors du clic sur le bouton de mon formulaire ?

    Je vous remercie par avance pour votre précieuse aide ^^

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,
    Tu peux faire deux champs cachés dont les valeurs sont la conversion des dates au format numérique. Ensuite, tu mets un validateur dessus.
    Ou encore, tu crées un javascript qui le fait.
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre du Club Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Points : 64
    Points
    64
    Par défaut
    Merci pour ces conseils. J'ai essayé de faire ça en Javascript, et ça fonctionne plutôt pas mal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <script language="javascript" type="text/javascript">
        function CheckPeriodLength(source, arguments) {
            var dateDeb=new Date()
            var dateFin=new Date()
     
            var TabChaine = document.getElementById("<%=txtDateDeb.ClientID %>").value.split('\/')
            dateDeb.setDate(TabChaine[0]);
            dateDeb.setMonth(TabChaine[1]);
            dateDeb.setYear(TabChaine[2]);
     
            TabChaine=arguments.Value.split('\/')
            dateFin.setDate(TabChaine[0]);
            dateFin.setMonth(TabChaine[1]);
            dateFin.setYear(TabChaine[2]);
     
            if (dateFin >= dateDeb.setDate(dateDeb.getDate() + 7)) {
                arguments.IsValid = false;
            } else {
                arguments.IsValid = true;
            }
        }
    </script>
     
     
    <asp:CustomValidator ID="DateValidator2" runat="server"
    	ControlToValidate="txtDateFin" ValidateEmptyText="false"
    	ErrorMessage="Impossible de renseigner un écart de plus de 7 jours."
    	ClientValidationFunction="CheckPeriodLength"
    	EnableViewState="true" />
    Je vais marquer le sujet comme résolu.

    Avant ça j'ai une petite question qui dérive un peu du sujet initial : quand on cumule les validateurs côté client pour un même contrôle, l'espace pour afficher le message d'erreur de chaque validateur est toujours pris, même lorsque le message ne s'affiche pas. Y'a-t-il moyen d'éviter d'avoir ces espaces blancs ?
    En gros, affichage si tous sont en erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[MaTextBox] Erreur1 Erreur2 Erreur3"
    Et si seule la 3ème erreur a lieu :

  4. #4
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Oui, c'est la propriété Display: http://msdn.microsoft.com/fr-fr/libr...r.display.aspx
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Membre du Club Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Points : 64
    Points
    64
    Par défaut
    Woohooo, t'es un amour. Euh... T'es génial !

    Merci pour ton aide (une fois de plus).

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/11/2014, 16h07
  2. Réponses: 7
    Dernier message: 29/11/2010, 12h26
  3. Réponses: 3
    Dernier message: 03/02/2009, 14h54
  4. [MySQL] Écart années entre deux dates
    Par romeskira dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/10/2008, 08h25
  5. difference de dates entre deux champs
    Par aquafafa dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/03/2008, 16h28

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