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

systemic_anomaly Messages postés 59 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 1 août 2005 - 2 avril 2005 à 15:22
systemic_anomaly Messages postés 59 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 1 août 2005 - 2 avril 2005 à 16:05
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
2 avril 2005 à 15:52
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#
0
systemic_anomaly Messages postés 59 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 1 août 2005 4
2 avril 2005 à 16:05
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
0
Rejoignez-nous