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 :

Valider qu'une ListBox n'est pas vide


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 207
    Points : 85
    Points
    85
    Par défaut Valider qu'une ListBox n'est pas vide
    Bonjour,

    Je cherche à controler qu'une ListBox n'est pas vide avant l'envois d'un formulaire
    J'ai donc mis un CustomValidator à cette ListBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     <asp:ListBox ID="LB_FONDEUR" runat="server" Width="300px" DataSourceID="DS_FONDEUR_SELECT" DataTextField="NOM" DataValueField="ID"></asp:ListBox>
     
    <asp:CustomValidator ID="CustomValidator2" runat="server"  ontrolToValidate="LB_FONDEUR" ErrorMessage="Requis" ForeColor="Red"
    OnServerValidate="CustomValidator2_ServerValidate" ValidationGroup="val_ok_cancel" Display="Dynamic"></asp:CustomValidator>
    Et voici le CS correspondant pour tester le nombre de ligne de la ListeBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    protected void CustomValidator2_ServerValidate(object source, ServerValidateEventArgs args)
            {
                if (LB_FONDEUR.Rows == 0)
                {
                    args.IsValid = false;
                }
                else
                {
                    args.IsValid = true;
                }
            }
    Mais cela ne fonctionne pas.
    Avez vous une idée du problème ?

    Merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 207
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Désolé de vous relancer sur mon problème mais comme c'est urgent je me permet

    Avez vous une idée de qui ne va pas dans mon code ?
    Ou est-ce qu'il y aurait une autre solution pour contrôler que ma ListBox n'est pas vide avant l'envoi du formulaire.

    Merci

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Je ne comprends pas trop, si ta ListBox est vide, c'est que tu as un problème au niveau du binding et/ou au niveau de la source de données. Rien à voir avec la validation

    A moins que tu ne cherches à savoir si au moins une ligne a été sélectionnée avant la soumission du formulaire ?

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 207
    Points : 85
    Points
    85
    Par défaut
    La source de données ne renvoie pas forcément des données.
    Elle est alimentée dans la page temporairement en fonction d'autres sélections.

    Je ne cherche pas non plus à savoir si une ligne a été sélectionnée dans la ListBox mais uniquement si elle contient des lignes

    Merci

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ok je vois ce que tu veux faire. Donc rajoute les attributs soulignés dans ton CustomValidator :
    Code ASPX : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:CustomValidator ID="CustomValidator2" runat="server"  SetFocusOnError="true" ValidateEmptyText="true" ControlToValidate="LB_FONDEUR" ErrorMessage="Requis" ForeColor="Red" OnServerValidate="CustomValidator2_ServerValidate" ValidationGroup="val_ok_cancel" Display="Dynamic"></asp:CustomValidator
    Ensuite, appelle la méthode Page.Validate afin de forcer la validation, dans l'évènement OnClick du bouton :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    protected void btnValidate_Click(object sender, EventArgs e)
    {
        Page.Validate();
        if (Page.IsValid)
        {
            // Si la page est valide...
        }
        else
        {
            // Si la page n'est pas valide...
        }
    }
    Et pour chipoter () tu peux écrire le contenu de la méthode CustomValidator2_ServerValidate en une seule ligne :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void CustomValidator2_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = this.LB_FONDEUR.Items.Count > 0;
    }

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 207
    Points : 85
    Points
    85
    Par défaut
    Super merci pour tout, je vais tester ça !

    Par je ne comprend pas pourquoi il y a le "Page.validate() " sur le bouton.
    Est-ce parceque c'est un CustomValidator et pas un RequiredFieldValidator ?

    Du coup le ErrorMessage="Requis" ne sert à rien, il faut donc indiquer le message d'erreur au niveau du "else" ?

    Merci

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par davelop Voir le message
    Par je ne comprend pas pourquoi il y a le "Page.validate() " sur le bouton. Est-ce parceque c'est un CustomValidator et pas un RequiredFieldValidator ?
    Lorsqu'il n'y a rien à valider (listbox vide, ou textbox vide), ça ne se déclenche pas tout seul. Il faut donc forcer la validation par Page.IsValid. Après je ne connais pas non plus tous les mécanismes donc je n'en dirais pas plus pour ne pas dire de betise.

    Citation Envoyé par davelop Voir le message
    Du coup le ErrorMessage="Requis" ne sert à rien, il faut donc indiquer le message d'erreur au niveau du "else" ?
    Non pas forcément, tu peux le laisser si tu veux afficher un message. Tu peux aussi le faire dans le else, mais à mon sens il faudrait que tu aies un besoin spécifique pour le faire (du genre que le texte à afficher provienne d'une base de données).

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 207
    Points : 85
    Points
    85
    Par défaut
    Bon ben je suis au regret de te dire que ça ne fonctionne pas chez moi.

    la page est considérée valide car elle est bien envoyée alors que LB_FONDEUR.Items.Count = 0


    Je suis un peu nul en .Net, du coup je galère à tester pour chercher là où ça ne va pas.

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    c'est normal que la page est envoyé puisque la validation se fait côté code-behind mais tu ne devrais pas entré dans le
    Pour éviter de faire un postback si les données ne sont pas valid il faut aussi créer une méthode en javascript qui sera appelé par ton customvalidator, c'est ça qui empêchera le postback en cas d'erreur.

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 207
    Points : 85
    Points
    85
    Par défaut
    Ah si en fait ça fonctionne !!
    Il fallait que je régénère le projet et copier tous les fichier sur le vrai serveur web.

    Super Merci !!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/02/2013, 16h09
  2. [AC-2003] Vérifier que le résultat d'une requête (n')est (pas) vide
    Par pedrus16 dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/06/2009, 15h34
  3. Comment vérifier si une structure n'est pas vide
    Par colorid dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2008, 00h01
  4. Réponses: 10
    Dernier message: 15/01/2008, 12h03
  5. Champ ds état visible ssi il n'est pas vide !
    Par Fredri dans le forum Access
    Réponses: 11
    Dernier message: 20/12/2005, 12h15

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