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 :

Validateur perso : ajouter un texte au summary en JS


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 42
    Points : 29
    Points
    29
    Par défaut Validateur perso : ajouter un texte au summary en JS
    Salut,

    J'ai créé un composant qui dérive de BaseValidator, afin de créer un validateur particulier.

    J'ai suivi le tutoriel de nicopyright, et le validateur fonctionne, à part un point :

    Si la validation côté javascript s'effectue correctement au clic du bouton validant (le message d'erreur s'affiche ...), le message ne s'affiche pas dans le Summary lorsque je change le focus sur un autre contrôle, contrairement aux validateurs présents dans .net.

    En revanche, la fonction javascript pour le contrôle des valeurs est bien exécuté lors du changement de focus.

    J'ai tenté de savoir s'il était possible d'accéder à une fonction JS pour ajouter du texte au Summary, mais je n'ai pour l'instant rien trouvé.

    Merci de m'éclairer si vous avez une idée

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    oups, post pas terminé

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    Voici un exemple minimaliste qui reprend ce que j'ai fait (à part les fonctions de validations, et quelques propriétés supplémentaires)

    Il s'agit d'un validateur qui va valider une string de longeur compris dans un interval donné :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
     
        public class StringLengthValidator : BaseValidator
        {
            // Taille min à contrôler
            [Browsable(true), Category("Validation"), DefaultValue(0), Description("Taille min du champ. 0 = pas de limite")]
            public Int32 MinSize
            {
                get
                {
                    Int32 minSize = 0;
                    if(ViewState["MinSize"] != null)
                        minSize = (Int32)ViewState["MinSize"];
                    return minSize;
                }
                set { ViewState["MinSize"] = value; }
            }
     
            // Taille max à contrôler
            [Browsable(true), Category("Validation"), DefaultValue(0), Description("Taille max du champ. 0 = pas de limite")]
            public Int32 MaxSize
            {
                get
                {
                    Int32 maxSize = 0;
                    if(ViewState["MaxSize"] != null)
                        maxSize = (Int32)ViewState["MaxSize"];
                    return maxSize;
                }
                set { ViewState["MaxSize"] = value; }
            }
     
            // Fonction de test de validité
            protected override bool EvaluateIsValid()
            {
                Int32 sizeToCompare = GetControlValidationValue(ControlToValidate).Length;
                return sizeToCompare >= MinSize && 
                       (sizeToCompare <= MaxSize || MaxSize == 0); 
            }
     
            // Ajout des valeurs pour y avoir accès en Javascript
            protected override void AddAttributesToRender(HtmlTextWriter writer)
            {
                base.AddAttributesToRender(writer);
                if (RenderUplevel)
                {
                    // MinSize
                    Page.ClientScript.RegisterExpandoAttribute(ClientID, "minlength", MinSize.ToString(), true);
                    // MaxSize
                    Page.ClientScript.RegisterExpandoAttribute(ClientID, "maxlength", MaxSize.ToString(), true);
                    // Fonction javascript à appeller pour validation client
                    Page.ClientScript.RegisterExpandoAttribute(ClientID, "evaluationfunction", "StringLengthValidatorEvaluateIsValid", false);
                }
            }
     
            protected override void Render(HtmlTextWriter writer)
            {
                base.Render(writer);
            }
     
            protected override void OnPreRender(EventArgs e)
            {
                base.OnPreRender(e);
     
                if (RenderUplevel)
                {
                    // On enregistre la fonction javascript
                    Page.ClientScript.RegisterClientScriptInclude("StringLengthValidatorJavaScript",
                        Page.ClientScript.GetWebResourceUrl(GetType(), "Validators.StringLengthValidator.js"));
                    string controlid = FindControl(ControlToValidate) == null ? string.Empty : FindControl(ControlToValidate).ClientID;
                    // je ne sais pas ce que ça fait, j'ai juste recopié bêtement,
                    Page.ClientScript.RegisterStartupScript(GetType(), "hookup1", string.Format("ValidatorHookupControlID('{0}', document.all ? document.all['{1}'] : document.getElementById('{1}'));", controlid , ClientID), true);
                }
            }
        }
    et mon fichier JS contient la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function StringLengthValidatorEvaluateIsValid(sender)
    {
        var string = ValidatorGetValue(sender.controltovalidate);
     
        return  (string.length >= sender.minlength) &&
                  (string.length <= sender.maxlength || sender.maxlength == 0);
    }
    Si j'ai le code asp suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <asp:TextBox ID="texte" runat="server" />
    <cc1:StringLenghtValidator 
        ID="slval" runat="server"
        ControlToValidate="texte"
        MinSize="5"
        MaxSize="10"
        ErrorMessage="Longueur de texte pas compris entre 5 et 10"
        Display="None"
    />
    <asp:ValidationSummary 
        ID="ValidationSummary1" runat="server"
    />
    <asp:Button ID="bt" runat="server" />
    Si je vais dans le text-box, je tape "12", lorsque je donne le focus à un autre contrôle, aucun texte ne s'affiche. Si je clique sur le bouton, le message d'erreur s'affiche (c'est bien la fonction javascript qui est déclenchée).

Discussions similaires

  1. Ajouter du texte dans une edit box
    Par raf_gug dans le forum MFC
    Réponses: 10
    Dernier message: 23/05/2013, 10h00
  2. Ajouter du texte dans un input à partir d'une autre fenêtre
    Par Michaël dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/04/2005, 20h14
  3. [jTextPane] Ajouter du texte à la suite...
    Par doudine dans le forum Composants
    Réponses: 2
    Dernier message: 03/01/2005, 13h38
  4. Ajout de texte dans un fichier
    Par willowII dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 24/08/2004, 19h30
  5. [TWebBrowser] Comment ajouter du texte ?
    Par el_diablos dans le forum Composants VCL
    Réponses: 18
    Dernier message: 06/07/2004, 09h17

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