IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Remplissage TreeView dynamique


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Remplissage TreeView dynamique
    Bonjour @ tous,

    actuellement en plein développement d'une application Windows Forms en C#, celle-ci est reliée à une base de données SQL SERVER.

    J'aimerais relier un Treeview à cette base de donnée.

    J'aimerais savoir comment pouvoir relié dynamiquement ce treeview???

    Cordialement, Abysse.

  2. #2
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    Ce sera mieux si tu nous donne la version des environnements sur lesquels tu travail (framework, base, ...).

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Alors .NET 4 ; Visual Studio C# 2010 Express.

    J'ai une table "Ensemble_usine" ; une autre "Sous_ensemble_usine"; une autre "Partie_libelle"; une dernière "Libelle".

    L'ordre précédemment cité est l'ordre hiérarchique que je désire afficher grâce à mon treeview.

    Cordialement.

  4. #4
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    Tu peux nous donner un exemple de la façon dont tu sauvegarde les données dans la base, de genre
    Table: Ensemble_usine
    Id | Name | etc
    1 Usine_A ....

    Table: Sous_ensemble_usine
    Id | Id_Ensemble_usine |
    1 1

    En somme les relation entre les tables.

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Alors j'ai pour
    Ensemble_usine:
    ID | nom
    1 | Entretien général

    Id incrément automatique pour ensemble_usine mais pour les autres c'est l'utilisateur qui rentre son ID

    Sous_ensemble_usine:
    ID | nom | id_ensemble

    Partie_libelle:
    ID | NOM | id_sous_ensemble

    Libelle :
    ID | NOM | id_partie_libelle

  6. #6
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut Remplir TreeView en utilisant Linq to Sql
    1- Tu dois établir une connection entre l'appli et la base de données. Pour cela le mieux sera d'utiliser la technologie Linq to Sql qui permet de faire du mapping objet relationnel simple. (lien: création de classes LINQ to SQL).
    2- Une fois que tu as généré le DataContext, tu peux maintenant exploiter le contenu de ta base.
    3- Le but ce sera de remonter toutes les données en utilisant une jointure simple (Inner Join). Une fois les données récupérées, elles seront groupées pour prendre la forme d'un arbre.
    4- Les données groupées seront intégrée facilement dans le control TreeView.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace TreeView
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
     
               //PopulateTreeView
                PopulateTreeView();
            }
     
            /// <summary>
            /// Allow you to retrieve data to display in TreeView
            /// </summary>
            private void PopulateTreeView()
            {
                //Create datacontext object
                TreeViewContextDataContext ctx = new TreeViewContextDataContext();
     
                //Using linq query to prepare data
                var usines = (from usine in ctx.Ensemble_Usines
                              join s_usine in ctx.Sous_Ensemble_Usines
                                 on usine.Id equals s_usine.Id_Ensemble_Usine
                                 into JoinSusine
                              from s_usineJoin in JoinSusine.DefaultIfEmpty()
                              join partLib in ctx.Partie_Libelles
                                 on s_usineJoin.Id equals partLib.Id_Sous_Ensemble_Usine
                                 into JoinUsinXPartLib
                              from UsinXPartLib in JoinUsinXPartLib.DefaultIfEmpty()
                              join lib in ctx.Libelles
                                 on UsinXPartLib.Id equals lib.Id_Partie_Libelle
                                 into JoinPartLibLib
                              from usineNode in JoinPartLibLib.DefaultIfEmpty()
     
                              select new
                              {
                                  Usine_Id = usine.Id,
                                  Usine_Name = usine.Name,
                                  S_usines = s_usineJoin,
                                  PartUsines = UsinXPartLib,
                                  PartLibXLib = usineNode
                              }).ToList();
     
                //take position like tree
                var treeGrouped = from l in usines                              
                                  group l by l.Usine_Name into groupParentID
                                  select new
                                  {
                                      Name = groupParentID.Key,                                  
                                      Items = from ens_us in groupParentID
                                              where ens_us.S_usines != null
                                              group ens_us by ens_us.S_usines.Name into sousEnsUsineGroup
                                              select new
                                              {
                                                  IdSousUsine = sousEnsUsineGroup.Key,
                                                  Items = from part_lib in sousEnsUsineGroup
                                                          where part_lib.PartUsines != null
                                                          group part_lib by part_lib.PartUsines.Name into groupPartLib
                                                          select new
                                                          {
                                                              NamePartLib = groupPartLib.Key,
                                                              Items = from li in groupPartLib                                                                 
                                                                      select li.PartLibXLib.Name
                                                          },
                                              },
                                  };
     
     
                //Binding
                TreeNode parentNode = null;
                foreach (var usineParent in treeGrouped)
                {
                    parentNode = new TreeNode(usineParent.Name);
                    foreach (var s_usine_node in usineParent.Items)
                    {
                        TreeNode usineChildNode = new TreeNode(s_usine_node.IdSousUsine.ToString());
                        foreach (var partLib in s_usine_node.Items)
                        {
                            TreeNode partLibNode = new TreeNode(partLib.NamePartLib);
                            foreach (var lib in partLib.Items)
                            {
                                TreeNode childLib = new TreeNode(lib.ToString());
                                partLibNode.Nodes.Add(childLib);
                            }
                            usineChildNode.Nodes.Add(partLibNode);
                        }
                        parentNode.Nodes.Add(usineChildNode);
                    }
     
                    parentNode.Collapse();
                    treeView1.Nodes.Add(parentNode);
     
                }
            }
        }
     
    }
    Exemple:

    Ensemble_usine:
    ID | nom
    1 | Production
    2 | Entretien

    Sous_ensemble_usine:
    ID | Name | id_ensemble
    1 | SEU_Production1 | 1
    2 | SEU_Entretien1 | 2
    3 | SEU_Production2 | 1
    4 | SEU_Entretien1 | 2

    Partie_libelle:
    ID | Name | id_sous_ensemble
    1 | PL_1 | 1
    2 | PL_2 | 2

    Libelle :
    ID | name | id_partie_libelle
    1 | Libelle_1 | 1
    2 | Libelle_2 | 2

    et comme résultat



    Fais moi savoir si tu as des commentaires.

Discussions similaires

  1. remplissage treeview dynamique
    Par bingo00 dans le forum C#
    Réponses: 4
    Dernier message: 20/05/2007, 23h13
  2. [Struts-Layout] Treeview Dynamique
    Par lili2704 dans le forum Struts 1
    Réponses: 7
    Dernier message: 17/04/2007, 17h19
  3. [Struts-Layout] Treeview Dynamique
    Par JerBi dans le forum Struts 1
    Réponses: 3
    Dernier message: 05/04/2007, 13h31
  4. 'erreur 35601' lors du remplissage treeview
    Par GAGNON dans le forum Access
    Réponses: 18
    Dernier message: 30/11/2006, 19h51
  5. TreeView dynamique
    Par partyboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/05/2006, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo