Datagrid imbriqué

cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005 - 8 avril 2004 à 09:48
 najateciges - 29 mars 2011 à 13:48
je voudrais savoir s'il est possible de mette un dataGrid dans un autre dataGrid ou dans un repeater
j'aimerais lier mon premier dataGrid a une source de donnees et creer une colonne ou apparaitrait pour chaque ligne un autre petit datagrid contenant quelques donnees...

David

-----
Un jour, je saurai !

36 réponses

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 avril 2004 à 11:46
Le truc c'est bien de faire une liaison entre 2 tables ??

genre dans le premier datagrid on affiche l'entete d'une commande et dans le 2eme datagrid on affiche le détail de cette commande c'est ca que tu souhaite faire ???

Arthenius
0
cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005
8 avril 2004 à 11:51
exactement, comment ta deviné!! j'alluscine

c'est justement pour gerer l'affichage de commandes, en effet le premier servirai a afficher toutes les commandes et pour chacune des lignes dans une colonne spécifique un deuxieme datagrid avec le details.

David

-----
Un jour, je saurai !
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 avril 2004 à 12:01
tu peux effectivement le faire avec deux datagrid

des que j'ai trouver un exemple .... je le poste
aux devdays de microsoft cela a ete fait...

jette un oeuil à la session 5 :
http://www.microsoft.com/france/msdn/devdays2004/telechargements/default.mspx

mais les exemples sont en VB.net la solution se trouve surement dans le windowsFormsDataVB

Arthenius
0
cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005
8 avril 2004 à 12:12
bon si deja on peux le faire c'est déja une bonne nouvelle!!
(pour precision c'est un développement web asp.net C#)

si tu trouve un exemple C# c'est le pied parce que les exemples microsoft en VB c'est pas ca!!

Merci de t'interesser a mon probleme!

David

-----
Un jour, je saurai !
0

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

Posez votre question
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 avril 2004 à 12:29
Bon alors en fait il faut t'arranger pour avoir un dataset dans lequel tu va avoir ta table entete et detail...
(normalement assez facile à faire avec l'explorateur de serveur tu glisse tes tables sur ta fenetre et apres tu fais un Générer le groupe de donner en vérifiant que tes 2 tables sont selectionnes
la tu doit avoir ton dataset avec les 2 tables...
dans ton projet tu va avoir un Dataset1.xsd tu double clique dessus et miracle de la technologie tu dois voir tes 2 tables maintenant il faut lier ces deux tables par une datarelation
base sur la cle de ta table entete qui doit ce trouver dans ta table detail....pour ce faire clique droit sur la table détail->ajouter->relation
tu definis ta relation regle de gestion etc...

une fois que tout ca est fait :
sur le datasource de ta datagrid entete tu prend le dataset correspondant a l'entete...
sur la datagrid detail datasource l'entete et datamember la fameuse relation qu'on créer avant...
et la ca devrait marcher
tes 2 datagrid devrait etre lié...
si je me suis pas gourder kkpart...

Arthenius
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 avril 2004 à 12:35
je me forme en ce moment à C#
et justement je faisait mumuse avec les datagrids et les BDDs..
alors 8-) pas de problême

si j'arrive à expliquer c'est que j'ai compris...
sinon je reprend la formation et je recommence...

Arthenius
0
cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005
8 avril 2004 à 15:23
"sur la datagrid detail datasource l'entete et datamember la fameuse relation qu'on créer avant..."

je comprend pas la

c'est ok pour le premier dataGrid mais je comprend pas comment lié le deuxieme et a quoi.
De plus comment l'intégrer au premier car mon but est de faire apparaitre le deuxieme dans une colonne du premier..

en tout cas merci beaucoup pour le debut c'est super bien expliqué ca fait plaisir de savoir que tout le monde ne repond pas en speed comme si ca les faisait chier de répondre!!!!
T un boss!!!

David

-----
Un jour, je saurai !
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 avril 2004 à 15:54
merci :)
alors en fait pour le 2eme datagrid tu met en datasource la meme chose que pour ton datagrid entete....
en gros tu aurais pu faire un copier - coller de ton premier datagrid
donc une fois cela fait, tu aura un datagrid detail identique a celui d'entete...

et maintenant pour ton datagrid detail tu affecte au datamember la relation qu'on a créer dans le xsd ...
et la ta datagrid détail devrait afficher les lignes de ta table détail...

en resume :

datadrid_entete.datasource = datagrid_detail.datasource
datagrid_detail.datamember = NOMDELARELATIONCREERDANSLEXSD

voilou...

tiens moi au courant...

Arthenius
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 avril 2004 à 15:59
haaaa
petit detail qui a aussi, je pense, son importance au moment de la création de la relation, bien mettre en élément parent ta table entete et en élément enfant ta table détail...

Arthenius
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 avril 2004 à 16:25
par contre pour ton truc de mettre un datagrid dans une colonne d'un autre datagrid ????? jamais vu...
je sais que tu peux faire afficher un petit "plsu" devant chaque ligne de l'entete qui permet de basculer et d'afficher le détail dans la meme datagrid...
mais je trouve ca pas genial...c'est pas tres clair...
pas lisible...
mais je dois peut etre avoir un exemple de ca...
fo voir...

Arthenius
0
cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005
8 avril 2004 à 16:27
je résume :

j'ai deux tables dans ma base de donnees : commande et détail_commande

je crée un dataSet (dataSet1) composé de ces deux tables

puis je lie les deux tables avec une relation "CommandeDetail_commande" (ce nom est généré automatiquement champ"name" et le champ"id" est vide)

ensuite je crée deux datagrid "dataCommande" et "dataDetail"

pour dataCommande:
DataSource = dataSet1;
DataMember = "";
(je vois apparaitre les données de la table commande..YES!!)

pour dataDetail:
DataSource = dataSet1;
DataMember = CommandeDetail_commande;
(mais la que dalle! rien n'apparait :sad) )

si je lance le projet ... Page blanche

Deux solutions :
-j'ai fais quelque chose qu'il fallait pas
-j'ai pas fais quelque chose qu'il fallait faire

Dans les deux cas : jsuis un teubé!!

David

-----
Un jour, je saurai !
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 avril 2004 à 16:46
je pense que c'est ta relation qu'est pas bonne...
les champs name et ID sont vide ???

il faut lier tes 2 tables par la cle primaire de la table commande, qui doit se retrouver dans ta table detail

sinon tu peux essayer d'utiliser l'assistant formulaire(clique droit ajouter nouvelle element-> assistant formulaire), tu lui donne le nom d'un nouveau groupe de données, qu'elle connexion utiliser, les tables (en utilisant la touche > tu rajoute tes 2 tables),tu creer une relation (en donnant un nom, la table parent et enfant, tu precise les cles qui servent a faire la jointure ) tu clique sur > et suivant tu verifie si tout est bon ou si tu veux oter certain champ de certaine table-suivant et tu choisi comment afficher tes données...

et tu aura un exemple qui doit fonctionner...
ca peut te faire une bonne base pour voir ce qui ne marche pas sur ton projet....

Arthenius
0
cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005
8 avril 2004 à 16:56
le champs name est bien rempli avec "CommandeDetail_commande" qui est générer automatiquement
c'est le champ id qui est vide mais je pense qye c'est normal par defaut non??

David

-----
Un jour, je saurai !
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 avril 2004 à 17:00
ben non je pense que le champ id c'est justement le champ qui sert a faire le lien entre ta table commande et detail

faut bien que tu dise a ta relation comment y va retrouver son detail par rapport a la table commande..
c'est quoi la structure de tes tables ??
et les cles primaires ???

Arthenius
0
cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005
8 avril 2004 à 17:33
j'ai essayé l'assistant formulaire
le champ id n'est pas rempli!!
lui il fait:
datacommande.datasource=dataset;
dataCommande.datamember = Commande (le nom de la table)
datacommande.dataKeyField = id_commande (clé primaire)

dataDetail.dataSource = "";
dataDetail.dataMember = Detail_commande (le nom de la table)
dataDetail.dataKeyField = id_commande (champ de detail_commande)

voila, bon ca marche mais le deuxieme datagrid apparait en dessous du premier, ce qui n'ai pas top vu que je boss pour une boite pouvant gerer plusieurs centaines de commande, alors avoir le detail en bas de page tu comprendra que c'est pas top, d'ou le dataGrid dans le dataGrid...

je cherche toujours!!!

David

-----
Un jour, je saurai !
0
cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005
8 avril 2004 à 17:33
j'ai essayé l'assistant formulaire
le champ id n'est pas rempli!!
lui il fait:
datacommande.datasource=dataset;
dataCommande.datamember = Commande (le nom de la table)
datacommande.dataKeyField = id_commande (clé primaire)

dataDetail.dataSource = "";
dataDetail.dataMember = Detail_commande (le nom de la table)
dataDetail.dataKeyField = id_commande (champ de detail_commande)

voila, bon ca marche mais le deuxieme datagrid apparait en dessous du premier, ce qui n'ai pas top vu que je boss pour une boite pouvant gerer plusieurs centaines de commande, alors avoir le detail en bas de page tu comprendra que c'est pas top, d'ou le dataGrid dans le dataGrid...

je cherche toujours!!!

David

-----
Un jour, je saurai !
0
cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005
8 avril 2004 à 17:34
ouops....

c'est possible de supprimer les doublons???

David

-----
Un jour, je saurai !
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 avril 2004 à 18:24
oui mais au moins avec 2 datagrid c clair...
le tout imbrique...
ca me parait ilisible...

Arthenius
0
cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005
8 avril 2004 à 19:31
Non non... Le détails des commandes ne prends jamais plus de 3 lignes et la plupart du temps c'est un ligne. De plus, c'est ca qui est en place actuellement en asp et on doit refaire pareil...

David

-----
Un jour, je saurai !
0
cs_aeled Messages postés 108 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 10 mars 2005
9 avril 2004 à 09:40
J'ai essayé d'inclure le second dataGrid dans une colonne du premier, la syntaxe n'a pas l'air de le deranger mais rien ne s'affiche...

je reste persuadé que cette solution est possible...

je cherche toujours...

David

-----
Un jour, je saurai !
0
Rejoignez-nous