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"));
 
    }