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

ASP.NET Discussion :

Construire un TreeView à partir d'une BDD


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 115
    Par défaut Construire un TreeView à partir d'une BDD
    Bonjour,

    J'ai une BDD avec une table "repertoire" de cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    idrepertoire     nom              idpere     replist
    1                Racine            NULL        1, 2, 3, 4, ...
    2                DossierClient      1          2, 3, 4, ...
    3                Client1            2          3, 4, 5, 6, 7, 8, 9
    4                  Job1             3          4, 5, 6, 7, 8, 9
    5                  Image            4          5
    6                  masque           4          6
    7                  Maquette         4          7
    8                  Modele           4          8
    9                  Pdf              4          9
    10              Client2             2          11, 12, 13, ...
    ...
    Est ce qu'il est possible à partir de cette table de créer un TreeView ? Avez-vous une idée/des liens qui me permettront d'avancer ? (j'ai jamais fais de TreeView)

  2. #2
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Bonjour,

    Oui bien sure que tu peu le faire depuis un BDD.
    Par contre je ne sais pas si tu peux le faire directement Inline.
    A ta place je passerais le code behind afin de construire ta treeview depuis ta sélection en base.

    Voici comment construire une treeview de manière générale :
    http://msdn.microsoft.com/fr-fr/libr....treeview.aspx

    Inspire toi de cette exemple

  3. #3
    Membre émérite 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

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 115
    Par défaut
    Voilà ce que j'ai coder :

    Dans le Page_Load()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DataTable dt = this.getNode("SELECT idrepertoire, nom FROM repertoire WHERE idpere is null ORDER BY idpere");
     
            foreach (DataRow dr in dt.Rows)
            {
                TreeNode NewNode = new TreeNode(dr["nom"].ToString(), dr["idrepertoire"].ToString());
                NewNode.SelectAction = TreeNodeSelectAction.Expand;
                NewNode.PopulateOnDemand = true;
                MonTreeView.Nodes.Add(NewNode);
            }
    Là je récupére donc le répertoire racine.

    Ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        protected void MonTreeView_treeNodePopulate(object sender, TreeNodeEventArgs e)
        {
            createNode(e.Node, e.Node.Value);
        }
    La méthode créateNode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
        public void createNode(TreeNode node, string valueId)
        {
            DataTable dtn = this.getNode("SELECT idrepertoire, nom FROM repertoire WHERE idpere = " + valueId + "ORDER BY idpere");
     
            foreach (DataRow dr in dtn.Rows)
            {
                TreeNode NewNode = new TreeNode(dr["nom"].ToString(), dr["idrepertoire"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Expand;
                node.ChildNodes.Add(NewNode);
            }
        }
    Ca se génére bien sauf pour les dernier noeud, quand il n'y a rien dans un noeud il m'affiche quand même un "+" dans le TreeView et lorsque je clique dessus j'obtiens une erreur :
    La référence d'objet n'est pas définie à une instance d'un objet.
    Le problème c'est que dans ma BDD les fichiers se trouvent dans une autres table que les répertoires. Avez vous une idée pour résoudre mon probleme ?

  5. #5
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Euh j'ai du mal à suivre ^^

    Pour commencer que contient :

    dr["nom"] et dr["idrepertoire"] ? pour le dernier élément.

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 115
    Par défaut
    dr["nom"] contient le nom du répertoire
    dr["idrepertoire"] contient l'id du répertoire

    En gros ma BDD s'organise comme ça :
    -une table répertoire (cf premier post)
    -une table fichier

    Table fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    idfichier    nom              idrepertoire   
    1                fichier1.pdf            49     
    2                fichier2.pdf            50         
    3                fichier3.pdf            51        
    4                fichier4.pdf            52         
    ...
    Le code de mon dernier post permet de construire mon TreeView en allant chercher les répertoires dans la BDD (Table : repertoire).

    Ca construit bien le TreeView le problème c'est lorsqu'on arrive sur un repertoire qui n'a plus de sous repertoire, ça me met quand même un petit "+" et lorsque je clique dessus j'ai une erreur puisqu'il ne trouve plus de dossier enfant.

    Voila une capture d'ecran si ca peut aider :


    Dans l'idéal ce serait de pouvoir lister les fichier dans les repertoires (et ces fichier sont dans la table fichier) ou au pire enlever le "+" des repertoires qui n'ont plus de repertoire enfant.

Discussions similaires

  1. Remplir un TreeView à partir d'une BDD
    Par DieInPain62 dans le forum VB.NET
    Réponses: 2
    Dernier message: 26/08/2014, 12h23
  2. [HTML] construire un mailto à partir d'une table
    Par Kafi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 08/09/2005, 16h01
  3. Réponses: 18
    Dernier message: 08/08/2005, 20h52
  4. Réponses: 3
    Dernier message: 03/08/2005, 11h21
  5. [Listview] Remplissage à partir d'une bdd mysql
    Par Cybher dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/07/2005, 09h32

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