ComboBox ne voulant pas se remplir à partir d'un IDataReader

Signaler
Messages postés
59
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
1 août 2005
-
Messages postés
59
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
1 août 2005
-
Bonjour à tous,



J'ai un problème surement simple à résoudre mais qui me prend la tête.

J'aimerais remplir une comboBox avec les valeurs récupérées dans un IDataReader.

J'ai vérifié en affichant à l'aide d'une MessageBox le contenu du IDataReader et c'est correct.

Mais pas moyen de remplir le comboBox.



Avec les DropDownList et DataGrid j'y arrivais facilement mais avec les
comboBox les "DataSource", "DataBinding" semble posé problème.



Voici le code que j'ai (qui ne marche pas, ce que je comprends) :


public void FillComboBoxCategory()

{

CategoryGateway aCategoryGateway = new CategoryGateway();

IDataReader dr = aCategoryGateway.FindAll();



if (null != dr)

{

comboBoxCategory.DataSource = dr;

comboBoxCategory.DisplayMember = "Name";

comboBoxCategory.ValueMember = "CategoryId";

dr.Close();

}

}



Merci d'avance.

2 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
87
Salut,

Le DataSource demande un objet implémentant IList, ce qui n'est pas le cas de IDataReader.
Donc passe par un objet "intermédiaire" implémentant IList (ArrayList etc) ou un DataSet/DataTable/DataView...

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
59
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
1 août 2005
3
Oui j'y avais pensé et j'avais le code suivant (qui marche pas non plus)

Pas de problème à l'execution, mais la combo est desesperement vide. A noté que

même si ce code marchait, je ne pourrais avoir que le "Name" et pas
"CategoryId" egalement que j'ai absolument besoin pour la suite.



J'ai bien pensé à d'autres solutions (utilisations d'un objet à mettre
dans l'arraylist) et encore d'autres trucs foireux qui pourraient
marché mais qui ne me semble pas optimal.


public void FillComboBoxCategory()

{

CategoryGateway aCategoryGateway = new CategoryGateway();

IDataReader dr = aCategoryGateway.FindAll();

ArrayList ArrayListOfCategory = new ArrayList();



if (null != dr)

{

while (dr.Read())


ArrayListOfCategory.add(dr["Name"].ToString());



comboBoxCategory.DataSource = ArrayListOfCategory


dr.Close();

}

}



Merci pour ton aide