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 :

CustomValidator qui ne bloque pas l'envoi de la page


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut CustomValidator qui ne bloque pas l'envoi de la page
    Bonjour,

    J'ai mis en place un customValidator pour vérifier l'antériorité de deux dates mais quoiqu'il arrive, quand je clique sur un bouton, la page est rechargée, même si il y a une erreur sur la date (le message d'erreur apparait).
    Il n'est pas possible que le bouton n'ai aucun effet (pas de rechargement de la page) si le custom control n'est pas valide ?

    Merci

    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    <td>
                        End Date
                    </td>
                    <td>
                        <asp:TextBox ID="TextBox7" runat="server" MaxLength="11" tooltip="dd/mm/yyyy"></asp:TextBox>
                        <asp:CustomValidator ID="customValidator1" runat=server 
                            ControlToValidate="TextBox7" ErrorMessage="Not possible ! Dude !" 
                            onservervalidate="customValidator1_ServerValidate" />
     
                    </td>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        protected void customValidator1_ServerValidate(object source, ServerValidateEventArgs args)
        {
            DateTime t1, t2;
            t1 = DateTime.Parse(TextBox7.Text.ToString());
            t2 = DateTime.Parse(tbStartDate.Text.ToString());
            if (DateTime.Compare(t1, t2) > 0)
                args.IsValid = true;
            else
            {
                args.IsValid = false;
            }
        }

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    T'as mis un contrôle côté serveur donc forcement ça fait un post back

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut
    Oui, c'est ce que j'ai pensé après avoir posté mon message..
    Il y a un moyen de tester si une date est supérieur à une autre sans recharger la page (les dates sont contenues dans des TextBox) ? Javascript peut etre ?

    Sinon, si je garde cette solution, il faut que je mette en place des propriétés page.IsValid dans mon code behind ?

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Titi41 Voir le message
    Sinon, si je garde cette solution, il faut que je mette en place des propriétés page.IsValid dans mon code behind ?
    Oui je pense

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut
    Citation Envoyé par Titi41 Voir le message
    Il y a un moyen de tester si une date est supérieur à une autre sans recharger la page (les dates sont contenues dans des TextBox) ? Javascript peut etre ?
    Et sinon, concernant cette question ?

  6. #6
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Citation Envoyé par Titi41 Voir le message
    Et sinon, concernant cette question ?
    Oui, tu dois le faire en Javascript.

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut
    J'ai réfléchi, et je vais quand meme le faire en C# (chiant le mec ^^)

    J'ai fait un peu de débug et quoi qu'il arrive, la fonction de mon bouton est exécutée... Comme ca se fait ?
    Je poste mon code :


    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using Utilities;
     
    public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
     
        protected void customValidator1_ServerValidate(object source, ServerValidateEventArgs args)
        {
            DateTime t1, t2;
            t1 = DateTime.Parse(TextBox7.Text.ToString());
            t2 = DateTime.Parse(tbStartDate.Text.ToString());
            if (DateTime.Compare(t1, t2) > 0)
                args.IsValid = true;
            else
            {
                args.IsValid = false;
            }
        }
     
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write("IN");
        }
    }
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default"%>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
     
     
            <table>            <tr>
                    <td>
                        Start Date
                    </td>
                    <td>
                        <asp:TextBox ID="tbStartDate" runat="server" MaxLength="11" tooltip="dd/mm/yyyy"></asp:TextBox>
     
                    </td>
                </tr>
                <tr>
                    <td>
                        End Date
                    </td>
                    <td>
                        <asp:TextBox ID="TextBox7" runat="server" MaxLength="11" tooltip="dd/mm/yyyy"></asp:TextBox>
                        <asp:CustomValidator ID="customValidator1" runat=server 
                            ControlToValidate="TextBox7" ErrorMessage="Not possible ! Dude !" onservervalidate="customValidator1_ServerValidate" 
                             />
     
            <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
     
     
                    </td>
                </tr></table>
        </form>
    </body>
    </html>
    Merci de jeter un oeil.. Je redoute l'erreur de merde ^^

  8. #8
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 159
    Par défaut
    Ca m'a l'air bon, mais tu oublie de tester la validation.
    sur ton bouton tu devra rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    protected void Button1_Click(object sender, EventArgs e)
        {
            Page.Validate();
            if (Page.IsValid)
            {
     
                Response.Write("IN");
            }
        }

  9. #9
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut
    Il est donc obligatoire de faire un test sur IsValid ?
    Car sur les autres controls, ce n'est pas nécessaire.
    Je suis en week end. Ca devrait marcher. Je vous tiens au courant lundi.
    Tchao
    Merci

  10. #10
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    pour plus d'infos sur les validators, je te conseille mon article : http://nico-pyright.developpez.com/t...rp/validators/

    tu y trouveras tout ce qu'il faut pour gérer la validation coté client ou coté server.

    S'il s'agit de comparer des dates, tu n'as pas forcément besoin d'un custom validator

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut
    merci pour ce super article, ca marche du tonnere de Dieu !

    J'utilise un CompareValidator.

    Ci@o

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

Discussions similaires

  1. Message attente qui ne bloque pas l'affichage en background
    Par gentyjp dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/05/2008, 00h25
  2. Temporisation qui ne bloque pas l'application
    Par Zorgloub dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/02/2008, 16h55
  3. alert() qui ne bloque pas le chargement de la page ?
    Par Cofondinde dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/08/2007, 10h31
  4. recvfrom qui ne bloque pas ?
    Par innosang dans le forum Réseau
    Réponses: 1
    Dernier message: 21/06/2007, 11h11
  5. Réponses: 8
    Dernier message: 25/11/2005, 18h38

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