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 :

Remplissage automatique d'une textbox en fonction du choix d'une liste déroulante


Sujet :

ASP.NET Ajax

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut Remplissage automatique d'une textbox en fonction du choix d'une liste déroulante
    Bonjour,

    J'ai une base de données composée de trois champ Nom,Prenom et Email.

    J'ai dans ma page aspx une liste déroulante retournant le nom et prénom des personnes, et une textbox contenant l'adresse email de la personne sélectionnée dans la liste.
    je voudrais que le contenu de ma textbox se mette à jour à chaque fois que je sélectionne un choix différent dans ma liste.
    J'ai essayé en rajoutant la fonction OnSelectedIndexChanged="MiseAjourTextBox", mais cela ne marche pas . Je sais qu'il faut utiliser une mise à jour partielle mais je ne vois pas comment faire lorsque cela est différent d'un évenement onclick


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <asp:UpdatePanel ID="MiseAJourListe" runat="server">
        <ContentTemplate>  
     
           <div class="StyleTextBox">  <asp:TextBox ID="Email" runat="server"  Width="245px"  ></asp:TextBox> </div>   
      </ContentTemplate>
       <Triggers>
       <asp:AsyncPostBackTrigger ... ?/>
       </Triggers>
     
        </asp:UpdatePanel>
    Ma liste déroulante et mon texbox sont remplis de cette manière au chargement de ma page :

    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
    protected void Page_Load(object sender, EventArgs e)
            {
                /*Définition de la chaine de connexion*/
                string c_string = @"data source=JF\PRO; initial catalog=BaseExemples; integrated security=true";
                SqlConnection cx = new SqlConnection(c_string);
     
                /*Remplissage de la liste déroulante pour le nom de la personne destinataire*/
                string rqNomPersonneDestinataire = " select Nom,Prénom,Email,Nom+' '+Prénom as NomPrenom from PersonnesDestinataires";
                SqlCommand sqlNomPersonneDestinataire = new SqlCommand(rqNomPersonneDestinataire, cx);
     
     
                    //Ouverture de la connexion
                    cx.Open();
     
     
                    SqlDataReader ResultatRequeteNomPersonneDestinataire = sqlNomPersonneDestinataire.ExecuteReader();
     
                    this.NomDestinataire.DataSource = ResultatRequeteNomPersonneDestinataire;
                    this.NomDestinataire.DataValueField = "Nom";
                    this.NomDestinataire.DataTextField = "NomPrenom";
                    this.NomDestinataire.DataBind();
                    this.NomDestinataire.SelectedIndex = 0;
     
                    //Fermeture du reader
                    ResultatRequeteNomPersonneDestinataire.Close();
     
                    //Récupération du choix de l'utilisateur dans la liste déroulante
                    string NomUtilisateur = NomDestinataire.SelectedItem.Value.ToString();
     
     
                    /*Remplissage de l'adresse E-mail de la personne destinataire sélectionnée dans la liste déroulante*/
                    string rqEmailPersonneDestinataire = " select Email from PersonnesDestinataires where Nom=@NomPersonne";
                    SqlCommand sqlEmailPersonneDestinataire = new SqlCommand(rqEmailPersonneDestinataire, cx);
     
                    sqlEmailPersonneDestinataire.Parameters.Add("@NomPersonne", SqlDbType.VarChar, 50);
     
                    //Affectation d'une valeur à sqlEmailPersonneDestinataire
                    sqlEmailPersonneDestinataire.Parameters["@NomPersonne"].Value = NomUtilisateur;
     
                    string EmailUtilisateur = (string)sqlEmailPersonneDestinataire.ExecuteScalar();
     
                    //Remplissage de la TextBox Email en fonction du choix de la liste déroulante
                    Email.Text = EmailUtilisateur;
     
     
            }
    Ma fonction "MiseAJourTextBox" :

    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
    protected void MiseAjourTextBox(object sender, EventArgs e)
            {
                /*Définition de la chaine de connexion*/
                string c_string = @"data source=JF\PRO; initial catalog=BaseExemples; integrated security=true";
                SqlConnection cx = new SqlConnection(c_string);
     
     
                {
                    //Ouverture de la connexion
                    cx.Open();
     
                    //Récupération du choix de l'utilisateur dans la liste déroulante
                    string NomUtilisateur = NomDestinataire.SelectedItem.Value.ToString();
     
     
                    /*Remplissage de l'adresse E-mail de la personne destinataire sélectionnée dans la liste déroulante*/
                    string rqEmailPersonneDestinataire = " select Email from PersonnesDestinataires where Nom=@NomPersonne";
                    SqlCommand sqlEmailPersonneDestinataire = new SqlCommand(rqEmailPersonneDestinataire, cx);
     
                    sqlEmailPersonneDestinataire.Parameters.Add("@NomPersonne", SqlDbType.VarChar, 50);
     
                    //Affectation d'une valeur à sqlEmailPersonneDestinataire
                    sqlEmailPersonneDestinataire.Parameters["@NomPersonne"].Value = NomUtilisateur;
     
                    string EmailUtilisateur = (string)sqlEmailPersonneDestinataire.ExecuteScalar();
     
                    //Remplissage de la TextBox Email en fonction du choix de la liste déroulante
                    Email.Text = EmailUtilisateur;
                }
            }

    Si quelqu'un voit comment faire ? Merci

  2. #2
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    ce n'est pas un problème ajax.

    met la propriété de ta dropdown "Autopostback" à vrai.
    et dans ton "selectedindexchanged" tu remplis tes textbox en fonction de ton item sélectionné dans ta dropdown


    edit: de plus, dans ton page_load, vérifie qu'on est pas dans un postback pour initialiser ta dropdown sinon tu vas avoir des soucis

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut
    Ok mais est-ce qu'il y a moyen si ma liste déroulante contient un ensemble de nom, de récupérer le nom sélectionné dans ma textbox mais sans avoir un rafraichissement total de ma page, mais juste du composant textbox.

    J'ai essayé avec ça, mais ça n'a pas l'air de fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <asp:DropDownList ID="NomDestinataire" runat="server" Width="250px" OnSelectedIndexChanged="MiseAjourTextBox" AutoPostBack="true">
             </asp:DropDownList> </div> <br /><br />
     
       <asp:UpdatePanel ID="MiseAJourListe" runat="server">
        <ContentTemplate>  
        <label for="Nom"> Nom:</label>
             <asp:TextBox ID="Nom" runat="server"  Width="245px"  ></asp:TextBox>   
        </ContentTemplate>
       <Triggers>
       <asp:AsyncPostBackTrigger ControlID="NomDestinataire"/>
       </Triggers>
     
        </asp:UpdatePanel>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     protected void MiseAjourTextBox(object sender, EventArgs e)
            {
       //Récupération du choix de l'utilisateur dans la liste déroulante
                    string NomUtilisateur = NomDestinataire.SelectedItem.Value.ToString();
     
    Nom.Text = NomUtilisateur;
     
             }

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut
    J'ai résolu mon problème.

    En fait, il fallait juste que je rajoute "if(! IsPostBack)" lors du remplissage de ma liste déroulante et j'ai enlever ma fonction MiseAjourTextBox qui ne servait plus à rien.

  5. #5
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    Citation Envoyé par stefsas Voir le message
    J'ai résolu mon problème.

    En fait, il fallait juste que je rajoute "if(! IsPostBack)" lors du remplissage de ma liste déroulante et j'ai enlever ma fonction MiseAjourTextBox qui ne servait plus à rien.
    Citation Envoyé par cortex024 Voir le message
    de plus, dans ton page_load, vérifie qu'on est pas dans un postback pour initialiser ta dropdown sinon tu vas avoir des soucis

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

Discussions similaires

  1. Modifier la valeur d'une textbox en fonction du résultat d'une listbox
    Par rafikiderevel dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/05/2015, 16h38
  2. [XL-2007] Valeur d'une textbox en fonction du choix d'un item d'une combobox
    Par jacksparot dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/02/2011, 18h11
  3. Réponses: 11
    Dernier message: 08/01/2010, 22h10
  4. Réponses: 11
    Dernier message: 10/06/2008, 10h31

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