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 :

DropDownList dynamique perd valeur au postback


Sujet :

ASP.NET

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Par défaut DropDownList dynamique perd valeur au postback
    Bonjour à tous !

    Je suis à la recherche d'un petit coups de main sur un soucis dont j'ai cherché la réponse en vain.

    J'ai créé un formulaire qui me permet de créer un profil utilisateur.
    J'ai donc des TextBoxes et des DropDownLists sur ma page, mon problème est donc sur une des DropDownList.

    J'ai parmi celles-ci, une liste qui dépend de la précédent.
    En effet, le remplissage de la 2ème se fait en fonction de la valeur de la 1ère, dynamiquement donc.

    Voici une petite image pour illustrer cela (avant/après) :


    Donc mon problème est que lorsqu'il y a PostBack (peu importe la source de celui ci), ma 2ème liste semble se re-remplir. De ce fait, je perd la valeur sélectionnée précédemment.

    Du coup, quand je clique sur le bouton "Valider" après avoir sélectionné une valeur, il me replace sur la valeur "Sélectionnez..." et enregistre un champ VIDE dans la BDD.

    (J'avais aussi un RequiredFieldValidator, de ce fait il me disait que la page n'était pas valide et donc pouvait jamais valider..)

    1ère liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        <asp:DropDownList ID="ddlTypePN" runat="server" DataSourceID="SqlTypePN" EnableViewState="true" DataTextField="libelle" DataValueField="valeur" AutoPostBack="true" OnSelectedIndexChanged="ddlTypePN_SelectedIndexChanged" OnDataBound="ddlTypePN_DataBound" > </asp:DropDownList>
    2ème liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:DropDownList runat="server" ID="ddlFctPN" AppendDataBoundItems="false" OnDataBound="ddlFctPN_DataBound" > </asp:DropDownList>
    Ma méthode de remplissage :
    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
     
    void populateDdl()
        {
     
        string val = "fct"+ddlTypePN.SelectedValue.ToString().Trim(); // Used for SELECT
        SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["My_DB"].ConnectionString);
     
        ddlFctPN.Items.Clear();
     
                DataTable subjects = new DataTable();
                    try
                    {
                        SqlDataAdapter adapter = new SqlDataAdapter("My SELECT", sqlConn);
                        adapter.Fill(subjects);
     
                        ddlFctPN.DataSource = subjects;
                        ddlFctPN.DataTextField = "libelle";
                        ddlFctPN.DataValueField = "valeur";
                        ddlFctPN.DataBind();
                    }
                    catch (Exception ex)
                    {
                        lblErr.Text = ex.Message;
                    }
     
     
        ddlFctPN.Items.Insert(0, new ListItem("Sélectionnez...", "null"));
     
        }

  2. #2
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Par défaut
    Bonjour,

    Je te conseil d'utilisé de l'Ajax.

    Si tu veux une solution simple utilise un asp:updatepanel c'est une version ajax de Microsoft.

    Mais je te conseil d'utiliser jquery.

    En ce qui concerne ton problème le chargement de ta dropdownlist cela dépend dont tu initialises ta source de donnée. Si tu charge via ton page load regarde le IsPostBack ou sqldatasource ou objectdatasource.

    Bonne chance

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Par défaut
    Merci beaucoup pour ta réponse CrashAngel.

    J'ai finalement résolu le problème, j'ai oublié de mentionner que tout mes contrôles se trouvent dans un asp:Table, de ce fait j'ai passé la propriété "EnableViewState" du tableau à "True" puis j'ai pu mémoriser la valeur de ma liste dynamique après un postback.
    Grâce à ça j'ai pu enfin garder la valeur sélectionnée en mémoire et il ne re-remplit pas la liste à chaque postback.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/04/2011, 16h07
  2. Réponses: 1
    Dernier message: 05/10/2009, 09h56
  3. Réponses: 3
    Dernier message: 20/06/2006, 09h07
  4. Régénérer des dropdownlist dynamiques
    Par torper dans le forum ASP
    Réponses: 2
    Dernier message: 25/04/2006, 15h49
  5. Comment changer dynamiquement la valeur d'une option de DbGrid ?
    Par Atrebate62 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2005, 13h35

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