Evil_Gouki_X
Messages postés19Date d'inscriptionmardi 29 mai 2007StatutMembreDernière intervention22 mai 2010
-
26 nov. 2007 à 10:33
Evil_Gouki_X
Messages postés19Date d'inscriptionmardi 29 mai 2007StatutMembreDernière intervention22 mai 2010
-
27 nov. 2007 à 04:24
Bonjour a tous.
je poursuis tranquilement le developpement en c# et voila que je me heurte a un probleme qui semblerait tout bete pour vous. Cependant je n'arrive pas a m'en sortir.
donc j'explique: (VS2005, BD sqlserver2000, avec la requete SQL je dois afficher 6 resultats)
j'ai trouve comment afficher des infos rapidement dans une combo box grace au DataReader:
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ToString());
SqlCommand cmd = new SqlCommand("TEST", cn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlDataReader reader = null;
cn.Open();
try
{
reader = cmd.ExecuteReader();
while (reader.Read())
{
ddlTestReader.Items.Add(reader["product_name"].ToString());
}
reader.Close();
}
catch (Exception ex)
{
lblErrmsg.Text = "Voila l'erreur" + ex;
}
cn.Close();
}
</Code C#>
Ca ca marche au poil, j'ai mes donnees de BD qui s'affiche dans mon ddl. MAIS (oui il y a toujours un mais) vous aurez remarquez que ce programme se trouve dans le protected void Page_Load. En general je cree le programme dans d'autre fichier cs et je les instancie dans mon programme proprement dit.
J'ai donc cree sur une feuille cs a part, une class que j'ai appele Master avec une methode que j'ai appele testdureade.
mais le probleme c'est qu'en faisant ca ma fonction ne me retourne que la valeur de la premiere ligne de la BD.
<Code C#protected void Page_Load>
protected void Page_Load(object sender, EventArgs e)
{
Master master = new Master();
ddlTestReader.Items.Add(master.testduReader());
}
public class Master
{
public Master()
{
}
public string testduReader()
{
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ToString());
SqlCommand cmd = new SqlCommand("TEST", cn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlDataReader reader = null;
cn.Open();
try
{
reader = cmd.ExecuteReader();
while (reader.Read())
{
return reader["product_name"].ToString();
}
reader.Close();
}
catch
{
return "ERROR";
}
cn.Close();
//si je ne met que le return vert une erreur est generee apres compilation, quand ma page se charge.
//et si je ne met que le return rouge je ne peux pas compiler car
//on me signal qu'il manque une valeur a renvoyer. donc faute de mieux j'ai mis ca.
return reader["product_name"].ToString();
}
}
En Faisant le debug je me suis appercu que la boucle while est arretee au return (en rouge) et que c'est pour cela que je n'ai donc qu'une seule valeur dans mon drop down list.
mon probleme c'est que je ne sais vraiment pas quoi utiliser pour me renvoyer toutes les valeurs.
j'ai essaye avec ArrayList, List<string>. mais le probleme c'est qu'il me retourne la list et non pas son contenu.
j'ai aussi essaye plusieurs changements mais je ne suis arrive a rien de mieux.
auriez vous une piste pour moi s'il vous plait?
A voir également:
DataReader et DropDownList, probleme de retour de donnees
Evil_Gouki_X
Messages postés19Date d'inscriptionmardi 29 mai 2007StatutMembreDernière intervention22 mai 20101 27 nov. 2007 à 04:07
Salut SharpMao
merci pour ton aide.
grace a toi j'ai trouver une autre facon legerement differentes utilisant les ListItems. je la met ici ca peut servir peut etre.
bien entendu j'espere avoir des critiques sur cette facon de faire afin de pouvoir l'ameliorer.
//ps: heu.. j'ai du changer ma Class Master en xMaster car il y avait des problemes de reconnaissances
//en effet Master existe deja et est utilise pour les master page si je ne me trompe pas
public class xMaster{
public xMaster(){}
public static void testduReader(DropDownList ddl)
{
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ToString());
SqlCommand cmd = new SqlCommand("TEST", cn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlDataReader reader = null;
cn.Open();
try
{
reader = cmd.ExecuteReader();
while (reader.Read())
{
//PS: ici je peux selectionner 2 colonnes de ma BD. je n'ai plus besoin de la liste
ddl.Items.Add(new ListItem(reader["product_name"].ToString(),reader["product_id"].ToString()));
}
reader.Close();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
cn.Close();
}
}