Combobox avec une requete sql a partir d'une classe

Résolu
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010 - 1 avril 2006 à 23:55
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010 - 2 avril 2006 à 15:01
Bonjour, je souhaiterais remplir une combobox avec une requete sql qui se trouve dans une classe mais comment faire?

le main :
private void PersonnageCreation01_Load(object sender, EventArgs e)
{
ClsPersonnage charger = new ClsPersonnage();

TxtRace.DataSource = charger.Charger();
TxtRace.DisplayMember = "rac_nom";
}

ma classe :
public MySqlDataReader Charger()
{
MySqlConnection sqlCon = new MySqlConnection();
string ConnnectionStr = "Database=dd;Data Source=localhost;User Id=root;Password=";

sqlCon.ConnectionString = ConnnectionStr;

string req = "select rac_nom from race ";

sqlCon.Open();
MySqlCommand sqlCom = new MySqlCommand(req, sqlCon);

MySqlDataReader result = sqlCom.ExecuteReader(CommandBehavior.CloseConnection);

return result;
}

voila si on pouvais m'aider, il veux pas de mon DataSource. En asp.net sa sa fonctionne :s
Merci

12 réponses

cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
2 avril 2006 à 14:35
Et bah non j'ai une erreur. je te remet le code et l'erreur :
classe :

public DataSet Charger()
{
MySqlConnection sqlCon = new MySqlConnection();
string ConnnectionStr = "Database=dd;Data Source=localhost;User Id=root;Password=";

sqlCon.ConnectionString = ConnnectionStr;

string req = "select rac_nom from race ";

sqlCon.Open();
MySqlDataAdapter da = new MySqlDataAdapter(req, sqlCon);

DataSet ds = new DataSet();
da.Fill(ds, "race");

return ds;
}

main :

private void PersonnageCreation01_Load(object sender, EventArgs e)
{
ClsPersonnage charger = new ClsPersonnage();
DataSet dataSet = ClsPersonnage .Charger();

TxtRace.DataSource = dataSet.Tables[0]; // ou dataSet.Tables["race"];
TxtRace.DisplayMember = "rac_nom";
}

DataSet dataSet = ClsPersonnage.Charger(); --> une reference d'objet est requise pour la propriete, le champs ou la methode non statique DD.CLsPersonnage.Charger();

voili ca me gave mais jviens demander de l'aide car sa fiat un bout de temps que je reste planter la dessus, c'est tout de meme plus facile en asp.net avec les dropdownList :s
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
2 avril 2006 à 14:38
Non mais la l'erreur elle vient juste du fait que j'ai utilisé la classe au lieu de l'instance de classe
charger.Charger(); (on instance) au lieu de ClsPersonnage.Charger();

Je pense que le message d'erreur etait explicite ;)



Mx
MVP C#
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
2 avril 2006 à 13:22
Salut,

Dans ton cas, il faut utiliser un DataSet plutot qu'un DataReader, et d'affecter ce Dataset en DataSource de ton Combobox

public DataSet Charger()
{
// Récuperation de ton DataSet
// Effectue l'ouverture de connexion et l'execution de ta requete dans un try/catch
// et n'oublies pas de fermer ta connexion (dans un finally)
return tonDataSet;
}

dans ton Main :

txtRace.DataSource = instanceDeClasse.Charger();
txtRace.DisplayMember = "rac_nom";

Mx
MVP C#
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
2 avril 2006 à 13:52
Euh voila se que j'ai maintenant :

classe :

public DataSet Charger()
{
MySqlConnection sqlCon = new MySqlConnection();
string ConnnectionStr = "Database=dd;Data Source=localhost;User Id=root;Password=";

sqlCon.ConnectionString = ConnnectionStr;

string req = "select rac_nom from race ";

sqlCon.Open();
MySqlDataAdapter da = new MySqlDataAdapter(req, sqlCon);

DataSet ds = new DataSet();
da.Fill(ds, "race");

return ds;
}

Main :

private void PersonnageCreation01_Load(object sender, EventArgs e)
{
ClsPersonnage charger = new ClsPersonnage();

TxtRace.DataSource = charger.Charger();
TxtRace.DisplayMember = "rac_nom";
}

ma combobox se rempli avec sa :
System.Data.DataViewManagerListItemTypeDescriptor
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
2 avril 2006 à 13:56
Au temps pour moi, il ne faut pas binder ton ComboBox avec ton DataSet, mais avec ton DataSet.Tables[0];



Mx
MVP C#
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
2 avril 2006 à 14:17
erf nan bah je galere la tu pourrai pas me montrer du code :D ? Merci de t'interresser a mon cas
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
2 avril 2006 à 14:23
private void PersonnageCreation01_Load(object sender, EventArgs e)
{
ClsPersonnage charger = new ClsPersonnage();
DataSet dataSet = ClsPersonnage.Charger()

TxtRace.DataSource = dataSet.Tables[0]; // ou dataSet.Tables["race"];
TxtRace.DisplayMember = "rac_nom";
}



Mx
MVP C#
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
2 avril 2006 à 14:40
hihi tu es un chef désolé la j'avais plus envie de reflechir. Enorme Merci pwouaaa ca soulage :D.
A une prochaine ;o) et bonne continuation.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
2 avril 2006 à 14:43
Y'a pas de quoi.
Par contre, je te conseille quand meme d'utiliser les requetes parametrees ;) Tu eviterais ce genre de probleme (plus besoin de gerer les ' ' ) et c'est mieux au niveau securitaire ;)



Mx
MVP C#
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
2 avril 2006 à 14:44
oki merci je vais regarder se chapitre :D ya tellement de chose a voir
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
2 avril 2006 à 14:58
Mince, oublies ma remarque sur les requetes parametrees, elle aurait du etre adressée a ce post



Mx
MVP C#
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
2 avril 2006 à 15:01
oki oki pas de soucis merci.
0