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 :

Récupérer la valeur de ma DropDownList.


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 109
    Par défaut Récupérer la valeur de ma DropDownList.
    Bonjour à tous,

    Dans un premier formulaire j'affiche les éléments d'un entretien (id, date, heure etc...). Lorsque je choisis de modifier un entretien (le décaler pour être précis) j'ouvre un deuxième formulaire qui récupère les infos via l'URL dans le page_load. Jusque là pas de problème mon composant Calendar et mes deux dropdownlist dans leur load récupère correctement la valeur de l'entretien.

    En revanche lors de la modification des deux dropdownlist la valeur transmise est toujours égale à la première valeur chargée lors du chargement de la page alors.

    Savez vous d'où le problème peut venir ?

    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
     
    public partial class DecalerEntretien : System.Web.UI.Page
        {
            private string jour;
            private string heure;
            private string minute;
            private string id;
     
            protected void Page_Load(object sender, EventArgs e)
            {
                id = Request.Params["identretien"];
                jour = Request.Params["date"];
                heure = Request.Params["heure"];
                minute = Request.Params["minute"];
            }
     
            protected void ButtonDecalerEntretien_Click(object sender, EventArgs e)
            {
                heure = DropDownListHeureEntretien.SelectedItem.Value;
                minute = DropDownListMinuteEntretien.SelectedItem.Value;
                jour = CalendarDateEntretien.SelectedDate.ToShortDateString();
                string date = jour + " " + heure + ":" + minute + ":00";
                ObjectManager.DecalerEntretien(int.Parse(this.id),date);
                Response.Redirect("MesEntretiens.aspx");
            }
     
           protected void DropDownListHeureEntretien_Load(object sender, EventArgs e)
            {
                DropDownListHeureEntretien.DataTextField = "id";
                DropDownListHeureEntretien.DataValueField = "heure";
                DropDownListHeureEntretien.Items.Clear();
                for (int i = 0; i < 24; i++)
                {
                    string s;
                    if (i < 10)
                        s = "0" + i.ToString();
                    else
                        s = i.ToString();
                    ListItem it = new ListItem(s,s);
                    DropDownListHeureEntretien.Items.Add(it);             
                }
     
                DropDownListHeureEntretien.SelectedValue = this.heure;
            }
     
            protected void DropDownListMinuteEntretien_Load(object sender, EventArgs e)
            {
                DropDownListMinuteEntretien.DataTextField = "id";
                DropDownListMinuteEntretien.DataValueField = "minute";
               DropDownListMinuteEntretien.Items.Clear();
               for (int i = 0; i < 12; i++)
                {
                    string s;
                    int x = 5 * i;
                    if (i < 2)
                        s = "0" + x.ToString();
                    else
                        s = x.ToString();
     
                    ListItem it = new ListItem(s,s);
                    DropDownListMinuteEntretien.Items.Add(it);             
                }
                DropDownListMinuteEntretien.SelectedValue = this.minute;
     
            }
     
            protected void CalendarDateEntretien_Load(object sender, EventArgs e)
            {
                CalendarDateEntretien.SelectedDate = DateTime.Parse(this.jour);
                CalendarDateEntretien.VisibleDate = CalendarDateEntretien.SelectedDate;
            }

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    C'est l'histoire classique du IsPostBack.

    C'est à dire que quand un retour serveur est effectué (suite au clique sur un bouton par exemple) tu repasses par l'évènement Load. Donc dans ton cas, tu réinitialises tes variables ainsi que tes contrôles.

    L'astuce qu'il ne faut jamais oublier, c'est de tester lors de l'évènement load si c'est un simple appel (clique sur une url) ou bien si c'est un retour serveur.

    Ton code devient (je te mets juste le code pour l'évènement load de ta page, faudra faire le même test pour les évènements load de tes contrôles) :

    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
    protected void Page_Load(object sender, EventArgs e)
    {
         if (IsPostBack == false)
         {
              // Ce n'est pas un retour serveur
              id = Request.Params["identretien"];
              jour = Request.Params["date"];
              heure = Request.Params["heure"];
              minute = Request.Params["minute"];
         }
         else
         {
              // C'est un retour serveur
         }
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 109
    Par défaut
    Je suis fan...



  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    Au passage perso je dirais même que le IsPostBack n'est pas une astuce mais fais partie des "Good practices" à connaitre.

  5. #5
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Citation Envoyé par gyzmau Voir le message
    Au passage perso je dirais même que le IsPostBack n'est pas une astuce mais fais partie des "Good practices" à connaitre.
    Tout à fait d'accord, le mot astuce était mal choisi.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/09/2010, 10h07
  2. Récupérer la valeur des dropdownlists dans GridView
    Par dcarroz dans le forum ASP.NET
    Réponses: 3
    Dernier message: 11/01/2010, 11h32
  3. Réponses: 0
    Dernier message: 15/12/2008, 17h14
  4. Récupérer la valeur d'un DropDownList
    Par rad_hass dans le forum C#
    Réponses: 1
    Dernier message: 19/02/2008, 16h55
  5. récupérer valeur d'un dropdownliste avec javascript
    Par Tyler Durden dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/07/2007, 21h47

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