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 Ajax Discussion :

RequiredFieldValidator et ajax


Sujet :

ASP.NET Ajax

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Par défaut RequiredFieldValidator et ajax
    Bonjour à tous.

    Voici mon problème :
    J'ai un formulaire avec 2 DropDownList :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:DropDownList ID="cmbOrga" runat="server" ValidationGroup="grpValide" AutoPostBack="True" CausesValidation="True" onchange='fctChangeOrga()'>
    </asp:DropDownList>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" 
                                    ControlToValidate="cmbOrga" ErrorMessage="*" SetFocusOnError="True" 
                                    ValidationGroup="grpValide"></asp:RequiredFieldValidator>
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <asp:DropDownList ID="cmbObjet" runat="server" ValidationGroup="grpValide" 
                                    onchange='fctChangeObjet()' >
                                </asp:DropDownList>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
                                    ControlToValidate="cmbObjet" ErrorMessage="*" SetFocusOnError="True" 
                                    ValidationGroup="grpValide"></asp:RequiredFieldValidator>
    La cmbOrga est remplie au chargement de la page et la fonction fctChangeOrga remplit la 2ème en ajax selon le choix de la première.
    L'ajax positionne egalement la liste sur l'element 1 quand celle ci n'a qu'un seul élément.

    Mise en situation :
    Si je choisis un élément dans la premiere liste et que je ne choisis rien dans la deuxieme, à l'envoi du formulaire j'ai une étoile à coté de la deuxième -> OK
    Si maintenant je choisis un élément dans la première, qui retourne un seul élément dans la 2ème, la 2ème liste est bien mise à jour et positionnée sur le seul élément, mais l'étoile est toujours présente donc impossible de valider le formulaire dans la foulée.

    Question :
    Comment, lors de l'appel à l'ajax, "réinitialiser" l'état du RequiredFieldValidator ?

    J'espère avoir été clair

    Merci d'avance.

  2. #2
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    Salut,

    Actuellement ton requieredField teste la valeur de SelectedItem.
    Or dans tes deux cas, celui-ci n'est pas défini. Pour qu'il le soit, il faut qu'un choix soit effectué dans la DDL même s'il n'y a qu'une seule possibilité.

    Deux solutions possibles :
    Ajouter un ListItem vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ddl.Items.Insert(0, "Selectionner un item");
    Et dans ce cas là tu modifies ton reqField en conséquence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
                                    ControlToValidate="cmbObjet" ErrorMessage="*" SetFocusOnError="True" InitialValue="Selectionner un item"
                                    ValidationGroup="grpValide"></asp:RequiredFieldValidator>
    Soit dans le code tu fais un petit ajout lors du binding de la seconde liste pour définir le selectedItem

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(ddl.Count==1)
    ddl.SelectedItem = MonItem;
    Mais cette solution est un peu moins propre.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Par défaut
    J'ai omis de le préciser mais j'ai effectivement en tête de liste un item "--- Choix ---"
    Si je met InitialValue="--- Choix ---", l'étoile n'apparait plus mais je ne peux toujours pas valider mon formulaire.

    Lors du binding de la 2eme liste (en ajax) je fais déjà :
    If Nbobj = 1 Then document.getElementById("ctl00_ContentPlaceHolder1_cmbObjet").options[1].selected = true;

  4. #4
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    Citation Envoyé par Plantadonf Voir le message
    J'ai omis de le préciser mais j'ai effectivement en tête de liste un item "--- Choix ---"
    Si je met InitialValue="--- Choix ---", l'étoile n'apparait plus mais je ne peux toujours pas valider mon formulaire.
    Pourquoi?
    Un message d'erreur spécifique?
    Citation Envoyé par Plantadonf Voir le message
    Lors du binding de la 2eme liste (en ajax) je fais déjà :
    If Nbobj = 1 Then document.getElementById("ctl00_ContentPlaceHolder1_cmbObjet").options[1].selected = true;
    Ca ressemble a un melange de VB et de javascript...
    Si tu fais ca coté serveur, utilise plutot
    ddl.SelectedValue=xxxx

Discussions similaires

  1. [AJAX] Effectuer plusieur appel ajax
    Par shwin dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/10/2005, 16h40
  2. [AJAX] Ajax et javascript contenu
    Par zekey dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/09/2005, 20h16
  3. [AJAX] AJAX et javascript
    Par spud5351 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 10h16
  4. [VB.NET] RequiredFieldValidator et 2 Buttons
    Par Redouane dans le forum ASP.NET
    Réponses: 3
    Dernier message: 19/01/2005, 10h46

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