Bonjour,
j'essaie d'exécuter la fonction suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ChargerDropDownList("SELECT DISTINCT cast(CENTRE as varchar) as CENTRE, NOM FROM vue_SELECTION_CENTRE", d_centre, "NOM", "CENTRE", Cnx("vue_SELECTION_CENTRE"));
Avec la source :

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
void ChargerDropDownList(string CodeSql, DropDownList MyDropDownList, string MyVar, string MyField, string MyCnx)
    {
        // Effacement du contenu
        MyDropDownList.Items.Clear();
 
        // Execute du code sql sur la BDD et met le résultat dans un DropDownList 
        SqlConnection myConnection = (SqlConnection)Session[MyCnx];
        SqlCommand myCommand = new SqlCommand(CodeSql, myConnection);
        SqlDataReader dtaRead = myCommand.ExecuteReader();
 
 
        MyDropDownList.DataSource = dtaRead;
        MyDropDownList.DataTextField = MyVar;
        MyDropDownList.DataValueField = MyField;
        MyDropDownList.DataBind();
 
        if (dtaRead.RecordsAffected > 0)
        {
            while (dtaRead.Read())
            {
                MyDropDownList.Items.Add(dtaRead.GetString(0));
            }
        }
        dtaRead.Close();
    }
Et j'obtiens l'erreur suivante :

Détails de l'exception: System.Data.SqlClient.SqlException: 'TOTO': nom de colonne incorrect.
sur la ligne

Ligne 228 : SqlDataReader myDataReader = myCommand.ExecuteReader();
Où TOTO est la première valeur de nom de la table.

par contre si on intervertit CENTRE et NOM dans l'appel de la fonction ça marche bien mais ce n'est pas ce que je voudrais obtenir (noms affichés à l'écran et valeurs de centre comme valeurs du contrôle).

Si quelqu'un arrive à comprendre l'erreur, ou bien a une autre manière de remplir un DropDownList avec Text et Values lues dans une table ça m'aiderait bien.

Merci