Combobox avec une requete sql a partir d'une classe [Résolu]

Signaler
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010
-
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010
-
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

Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
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#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
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#
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
Au temps pour moi, il ne faut pas binder ton ComboBox avec ton DataSet, mais avec ton DataSet.Tables[0];



Mx
MVP C#
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

erf nan bah je galere la tu pourrai pas me montrer du code :D ? Merci de t'interresser a mon cas
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
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#
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

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.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
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#
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

oki merci je vais regarder se chapitre :D ya tellement de chose a voir
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
Mince, oublies ma remarque sur les requetes parametrees, elle aurait du etre adressée a ce post



Mx
MVP C#
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

oki oki pas de soucis merci.