audweiller
Messages postés10Date d'inscriptionvendredi 21 novembre 2003StatutMembreDernière intervention 4 mai 2005
-
3 mai 2005 à 15:35
dibouched
Messages postés219Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention17 juillet 2007
-
4 mai 2005 à 11:08
Hello,
J'essaye désepérément de remplir mon datagrid à l'aide d'un arrayList, mais sasn succès.
Est-ce que l'un ou l'une d'entre vous aurait la solution miracle ???
Pour info et si besoin est voici un petit bout de mon code ...
public
class RqtProduit
{
/// <summary> Sélectionne l'ensemble des produits </summary>
/// <returns> Retourne une collection de produits </returns>
public ArrayList selectAll()
{
// Déclaration des variables
string sql;
OleDbCommand objSql;
OleDbDataReader datas;
// Création des instances
Connection conn = Connection.getUniqueInstance();
ArrayList produits =
new ArrayList();
// Création et exécution du script SQLsql "SELECT pro_id, typ_nom, pro_nom, pro_stock, pro_descr, pro_contenu, pro_prix, pro_stockAlerte FROM TypeProduit LEFT JOIN Produit ON TypeProduit.type_id Produit.pro_typ_id WHERE pro_existant = Yes";
objSql = conn.select(sql);
// Récupération des données de l'exécution du script
datas = objSql.ExecuteReader();
// Boucle pour l'ensemble des données permettant de créer des instances et les affecter à la connection
while (datas.Read())
{
// Création de l'instance avec les paramètres et affectation à la collection
Produit produit =
new Produit(
new Integer(datas.GetInt16(0)), datas.GetString(1), datas.GetString(2),
new Integer(datas.GetInt32(3)), datas.GetFloat(6),
new Integer(datas.GetInt32(7)));
dibouched
Messages postés219Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention17 juillet 20072 3 mai 2005 à 17:06
mais essaye ce que je te dis ca va marcher !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
apres que ton-arrylist est remplie va essye ce code c'est fait pour toi!!!!!!!!!!!!!!!!!!!
</columns>
<COLUMNS><HEADERTEMPLATE><COLUMNS><HEADERTEMPLATE></HEADERTEMPLATE></HEADERTEMPLATE>la proprite autogernrate de votre datagrid est a false
maintenant essaye ca avec une colone ensuite avec d'autre colone
DiBou
email:dibouched@yahoo.fr
audweiller
Messages postés10Date d'inscriptionvendredi 21 novembre 2003StatutMembreDernière intervention 4 mai 2005 3 mai 2005 à 17:07
Alors j'ai essayer les 2 propositions mais aucune ne marche ...
Voici les codes :
Pour la sol 1 :
int i=0;
DataTable dt = new DataTable();
//Récupération de l'array list
ArrayList produits = new ArrayList();
Director dir = new Director();
produits = dir.selectAllProduits();
MOD.Produit produit;
//Ajout de colone
dt.Columns.Add(new DataColumn("mot1", typeof(Int32)));
//Nouvel enregistrement
//DataRow row1 = dt.NewRow();
DataRow row1 = dt.NewRow();
produit = (MOD.Produit)produits[i];
row1[i]= produit.getId().integer;
//contenu de ton arryliste tu fais le parcours un par un
//apres la fin pour passer a l'enregistrementy suivant
dt.Rows.Add(row1);*/
Pour la sol 2 :
//Récupération de l'array list
ArrayList produits =
new
ArrayList();
Director dir = new
Director();
produits = dir.selectAllProduits();
MOD.Produit produit;
produit = (MOD.Produit)produits[2];
dgProduits.DataSource = produits;
Les 2 compiles mais elles n'affichent rien ...
Encore un petit coup de pouce svp ...
audweiller
Messages postés10Date d'inscriptionvendredi 21 novembre 2003StatutMembreDernière intervention 4 mai 2005 3 mai 2005 à 17:27
Alors j'ai essayer la 2eme version de ton code, adapté pour C# car je n'ai pas de partie html
Code :
ArrayList produits =
new ArrayList();
Director dir =
new Director();
produits = dir.selectAllProduits();
MOD.Produit produit;
DataTable dt =
new DataTable();
dt.Columns.Add(
new DataColumn("produit",
typeof(
string)));
dt.Columns.Add(
new DataColumn("produit1",
typeof(
string)));
dt.Columns.Add(
new DataColumn("produit2",
typeof(
string)));
dt.Columns.Add(
new DataColumn("produit3",
typeof(
string)));
dt.Columns.Add(
new DataColumn("produit4",
typeof(
string)));
dt.Columns.Add(
new DataColumn("produit5",
typeof(
string)));
for (
int i = 0; i < produits.Count; i++){
DataRow row1 = dt.NewRow();
produit = (MOD.Produit)produits[i];
row1[i]= produit.ToString();
dt.Rows.Add(row1);
i=i+1; }
dgProduits.DataSource=dt;
dibouched
Messages postés219Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention17 juillet 20072 4 mai 2005 à 09:07
dgProduits.DataBind();
et non
dgProduits.DataBindings;
esaye ce ca va marcher
maintrenant ca commece a converger
et et dans ton code HTML tu fais ca
<%#DataBinder.Eval(Container,"DataItem.produit") %>
<%#DataBinder.Eval(Container,"DataItem.produit1") %>
<%#DataBinder.Eval(Container,"DataItem.produit2") %>
<%#DataBinder.Eval(Container,"DataItem.produit3") %>
<%#DataBinder.Eval(Container,"DataItem.produit4") %>
<%#DataBinder.Eval(Container,"DataItem.produit5") %>
si encore il ya une probleme ajoute un label dans ton dat grid et let dans
Text='<%#DataBinder.Eval(Container,"DataItem.produit") %>'
'
bonne courage
audweiller
Messages postés10Date d'inscriptionvendredi 21 novembre 2003StatutMembreDernière intervention 4 mai 2005 4 mai 2005 à 09:28
Je te remercie pour ton aide mais je code en C#. Je n'ai donc aucune partie HTML.
Si j'ai ecris dgProduits.DataBindings; c'est simplement que je n'ai pas de définition pour dgProduits.DataBind(); De plus dgProduits.DataBindings; ne passe pas à la compil'
Donc ton code ne marche pas dans ma situation, je l'ai tourné dans tous les sens. mais c'est gentil de m'avoir aidé
dibouched
Messages postés219Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention17 juillet 20072 4 mai 2005 à 10:48
tu ne me comprend encore pas
mon code marche et ca devrai marcher
moi aussi je code en c#
HTML pour dire ton page web WebForm
la ou tu as ajouter les colones de ton data grid
tu doit ajouter les lignes que je te donner pour afficher les resultat
passe a ton page aspx dans ton datagrid
fait comme suit
dibouched
Messages postés219Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention17 juillet 20072 4 mai 2005 à 11:08
je susi désolé
mais j'ai remarque que tu es entrains d'afficher tous le sproduit dans une seule ligne
tu fasi comme ca
DataRow row1 = dt.NewRow();
for (int i = 0; i < produits.Count; i++){
produit = (MOD.Produit)produits[i];
row1[i]= produit.ToString();
i=i+1; }
dt.Rows.Add(row1);
ou bien
for (
int i = 0; i < produits.Count; i++){
DataRow row1 = dt.NewRow();
produit = (MOD.Produit)produits[i];
row1[0= produit.ToString();
dt.Rows.Add(row1);
i=i+1; }
et dasn le deusiemme cas tu n'utilse pas produit , produit1,produit2..........
mais tous simplement une seule
produits