medgha
Messages postés41Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention 3 mai 2010
-
29 juil. 2008 à 10:05
medgha
Messages postés41Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention 3 mai 2010
-
30 juil. 2008 à 19:50
bonjour à tout le monde,
je suis entrain de faire une application en C# qui interagit avec une base de données access
et j'aimerai utiliser un treeview. j'ai fai un petit peu de recherche avant de poster ma question et je ss tombé sur ça:
http://www.csharpfr.com/infomsg_REMPLIR-TREEVIEW-DEPUIS-BASE-ACCESS_798372.aspx mais j n'arrive pas trop..
donc voila si qlq '"un pêu m'aider ça sera tres genti
merci d'avance
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 29 juil. 2008 à 16:02
Bon je vais tenter de faire simple.
Pour commencer télécharge cette impression écran http://images2.photomania.com/551956/1/rad15B5E.png Sur cette image je t'ai afficher les 3 points importants à faire apres avoir installe le TreeView avec la toolbox (à gauche de la fenêtre, non affiche sur l'image)
1-clique en bas à gauche pour passer en mode "design"
2-clique sur la fleche à droite du TreeView
3-Choisis ta source de données. Je pense que tu devras en créer une nouvelle mais là c'est tout expliqué pas à pas.
Voili voilou.
@Pluche
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 29 juil. 2008 à 12:45
Salut,
Qu'est ce que tu ne comprend pas exactement ?
Sais-tu que tu n'est pas obligé de remplir ton TreeView en code-behind comme dans le post ? Tu peux aussi, avec le mode design, relier ton TreeView à ta base facilement.
@Pluche
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
medgha
Messages postés41Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention 3 mai 2010 29 juil. 2008 à 13:31
tt d'abord je te remercie pour ta reponse..
en fait le truc c'est que je suis débutant et je n'ai jamaiss travaillé avec des treeview..donc je ne sais pas pas comment m'y prendre..si tu avais une solution ça sera tres genti...
pour la solution que tu viens de me proposé : " relier en mode disigne" je sais pas si c'est la mêm chose q'avec les dataGridView mais je n'arrive pas...
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 29 juil. 2008 à 16:05
Argh non je viens de vérifier après avoir eue un doute çe ne marchera pas il faudrait que tu passes par un fichier XML.
Tu es obligé de le construire en code-behind.
Je t'envoie un exemple mais avec une base SQL parce que c'est le seul exemple que j'ai sous la main
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 29 juil. 2008 à 16:16
Alors voilà :
// connection … la base de donnees
SqlConnection
Conn =
new
SqlConnection
(
"chaine de connection"
);Conn.Open();
SqlDataAdapter
a =
new
SqlDataAdapter
(
"requete"
, Conn);
DataSet
s =
new
DataSet
();a.Fill(s);
//creation de toutes les branches Root
foreach
(
DataRow
dr
in
s.Tables[0].Rows){
TreeNode
n =
null
;
//tu recupere ce que tu veux afficher
string
root dr[0].ToString();n
new
TreeNode
(root);TreeView1.Nodes.Add(n);
}
Conn.Close();
Attention ce code ne permet que de creer un niveau car je ne sait pas comment tu gère pour savoir quelle branche est la fille de quelle autre branche. Si tu veux un truc plus complet donne moi ta requête en m'expliquant les champs que tu veux récupérer et ta manière de fonctionner.
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
medgha
Messages postés41Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention 3 mai 2010 29 juil. 2008 à 16:38
encore merci pour tt t efforts..
voila je t'explique un peu ce que veux faire.
enfaite j'ai une table ou je stocke des machines. cette table a les champs suivants "unité" "nom de la machines" et d'autre champs
donc je veux afficher moi dans ma treeview :le champs unité et nom de la machine
preumier niveau unité-->deuxieme niveau nom des machines
medgha
Messages postés41Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention 3 mai 2010 29 juil. 2008 à 16:50
avec le code que tu ma filé j'arrive à afficher le champ "nom de la machine"
maint il me faut donc lea aficher par "unité"
je sais pas si je me ss bien expliqué...j'atens ta proposition
et encore merci baucoup
medgha
Messages postés41Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention 3 mai 2010 29 juil. 2008 à 17:29
j'ai essayé ton, code et aparement il y'a deux erreures
la preumiere erreur: dans la deuxime boucle foreach (
DataRow dr
in s.Tables[0].Rows)
il me souligne dr comme erreur.
et la deuxieme erreur il reconnait pas
ChildNodes dans la ligne
//tu rajoute un enfant a cette branche root n.ChildNodes.Add(n2);
je voualais te demander une autre chose par raport a la requette sql
puisque j'ai deux champ a recuperé "unité" et "libellé"( libelé == nom de la machine)
donc j'aurais: private string SqlGrid = "SELECT MACHINES.UNITE, MACHINES.LIBELE FROM MACHINES"; ?
medgha
Messages postés41Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention 3 mai 2010 29 juil. 2008 à 17:33
j'ai oublié un autre problème toute a l'heur quand j'ai affiché les unité..je n'ai fait que lister tout ce qu'il y'a dans le champs "unite" de ma base, mais comment faire pour ne pas repeter d'aficher la même unité plusieur fois)?
encore merci pour ton aide
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 30 juil. 2008 à 09:27
Salut,
Bon pour ne pas répeter tes unités il faut rajouter un "distinct" avant MACHINES.UNITE dans ta requête (celle que tu as mise est OK).
Pour ton erreur sur "dr" c'est parcequ'il existe déjà dans la boucle du dessus, t'as qu'a l'appeller "dr2".
En modifiant ça, ton autre erreur devrai s'annuler.
Par contre la prochaine fois, s'il y a une erreur, précise ce qu'il t'affiche, parce que là c'était explicite et tu aurai pu comprendre facilement. Il faut que tu cherche un peu plus avant de poser ta question.
@Pluche
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
medgha
Messages postés41Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention 3 mai 2010 30 juil. 2008 à 11:05
bonjour,
je m'exuse c'est vrai que j'ai pu chercher un peu plus avant de demander..dailleur je l'ai fais
j'ai changé le nom du datarow dr par dr2 par contre l'erreur pour
ChildNode
est tjrs là..l'erreur c'est:
System.Windows.Forms.TreeNode doese note contain a difinition for '
ChildNode
'
je sais si je me suis bien exliqué
entre temps j'ai fai autrement:
foreach (DataRow dr in this.DtsGrid.Tables[0].Rows)
{
TreeNode n = null;
//tu recupere ce que tu veux afficher
string root = dr[0].ToString();
n = new TreeNode(root);
this.treeView1.Nodes.Add(n);
foreach (DataRow dr1 in this.DtsGrid.Tables[0].Rows)
{
//Si l'unite est la meme
if (dr1[0].ToString() == root)
{
TreeNode n2 = null;
//tu recupere le libelle
string child = dr1[1].ToString();
n2 = new TreeNode(child);
//tu rajoute un enfant a cette branche root
//n.Nodes.Add(n2);
n.ChildNodes.Add(n2);
}
}
}
j'ai changé ma requette comme tu m' di mais il m'aporte tjrs toutes les lignes c'est a dire il repete tjrs les même lignes.
je vais essayer de travailler dessus pour voir si je pux faire qlq chose
encore je te remercie pour ton aide et désolé du temps que je t'ai pris
medgha
medgha
Messages postés41Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention 3 mai 2010 30 juil. 2008 à 11:08
dslé dans le code que j'ai mis tout a fais en bas j'ai mis:
//tu rajoute un enfant a cette branche root
n.Nodes.Add(n2);
//n.ChildNodes.Add(n2);
aulieu de ce que j'ai mis dans le message d'avant pour eviter l'eereur dont je parlais :
System.Windows.Forms.TreeNode doese note contain a difinition for ' ChildNode
'
encore désolé