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 :

Treeview et répertoire


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 84
    Par défaut Treeview et répertoire
    Bonjour à tous,

    je recherche le moyen d'insérer les fichiers, répertoires et sous répertoires d'un répertoire spécifié dans un Treeview.

    Merci à tous.

  2. #2
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Tu trouveras tout ce qu'il te faut dans le namspace System.IO pour parcourir ton arborescence. Puis tu génère ton treeview à la volée avec les données récupérées

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 84
    Par défaut
    Je veux remplir mon treeview ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     foreach (string repertoire in repertoires)
            {
                TreeView1.Nodes.Add(repertoire);
                RechercheDossier(Path.Combine(s, repertoire));
            }
    mais il me génère ces erreurs :

    Erreur 1 La méthode surchargée correspondant le mieux à 'System.Web.UI.WebControls.TreeNodeCollection.Add(System.Web.UI.WebControls.TreeNode)' possède des arguments non valides E:\Cours\Stage\safety-backup\sauvegarde.aspx.cs 66 13 E:\...\safety-backup\

    et

    Erreur 2 Argument '1' : impossible de convertir de 'string' en 'System.Web.UI.WebControls.TreeNode' E:\Cours\Stage\safety-backup\sauvegarde.aspx.cs 66 33 E:\...\safety-backup\


    Ce n'est pas une chaine qu'il faut mettre en argument pour add?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 84

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 84
    Par défaut
    Nouveau probleme :

    je récupère bien tous les fichiers et tous les répertoires de mon dossier mais je n'arrive pas à bien les organiser dans mon 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
    fichiers = System.IO.Directory.GetFiles(s);
            repertoires = System.IO.Directory.GetDirectories(s);        
     
    foreach (string fichier in fichiers)
            {
                TreeView1.Nodes[0].ChildNodes.Add(new System.Web.UI.WebControls.TreeNode(fichier));
                System.IO.FileInfo fInfo = new System.IO.FileInfo(fichier);
                //code de traitement des fichiers
            }
     
            foreach (string repertoire in repertoires)
            {
                TreeView1.Nodes.Add(new System.Web.UI.WebControls.TreeNode(repertoire));
                RechercheDossier(Path.Combine(s, repertoire));
     
            }
    J'ai tous mes fichiers dans le premier noeud (normal avec le nodes[0]).
    Et je n'arrives pas à mettre mes sous répertoires au bon endroit.
    En effet ici chaque répertoire créer un noeud parent.

    Des solutions?

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu réfléchis un peu avant de poser tes questions ou tu postes ton pb dès que tu le rencontres????

    Car là, c'est juste ton algo qui fait pas le boulot dans le bon ordre...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 84
    Par défaut
    Et bien je n'ai pas de solutions, je trouve pas çà évident...

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu n'as qu'à faire une fonction récursive qui s'appelle pour chaque répertoire, et qui prend en paramètre le node dans lequel ajouter des éléments ainsi que le chemin vers le répertoire à traiter.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 84
    Par défaut
    J'ai développé ce code mais il me met toujours une erreur :

    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
        private void RechercheDossier(string s)
        {
            string[] repertoires;
            string[] fils;
     
            repertoires = System.IO.Directory.GetDirectories(s);
            //code de traitement des répertoires
            int i=0;
            if (repertoires.Length != 0)
            {
                foreach (string repertoire in repertoires)
                {
                    TreeView1.Nodes.Add(new System.Web.UI.WebControls.TreeNode(repertoire));
                    fils = System.IO.Directory.GetDirectories(Path.Combine(s, repertoire));
     
                    if (fils.Length != 0)
                    {
                        foreach (string fil in fils)
                        {
                            TreeView1.Nodes[i].ChildNodes.Add(new System.Web.UI.WebControls.TreeNode(fil));
                            RechercheDossier(Path.Combine(s, repertoire + "\\" + fil));
                        }
                    }
                    i = i + 1;
                }
            }
        }
    Pour moi cela me parait correct pour l'affichage des répertoires et sous répertoires.

    Qu'en pensez vous?

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    En générale, une boucle for dans un boucle récursive, n'est pas synonyme de mauvaix algo?

    Et si tu utilises un index avec i... autant utiliser un for classique, plutot qu'un foreach...


    Sinon c'est quoi l'erreur?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 84
    Par défaut
    L'erreur se trouve au chargement de ma page lorsque j'appelle ma procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RechercheDossier(this.Server.MapPath("\\monrepertoire\\"));
    Voici l'erreur :

    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.InvalidOperationException: Échec lors du mappage du chemin d'accès '/monrepertoire/'.

    Pour mon entier i, il est là pour indiquer sur quel noeud je veux ajouter un noeud enfant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TreeView1.Nodes[i].ChildNodes.Add(new System.Web.UI.WebControls.TreeNode(fil));

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 84
    Par défaut
    Personne n'a de solution?

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Toutes tes entrées sorties de prog doivent etre géré dans un try catch.

    Et je pense qu'il ne trouve tout simplement pas le répertoire...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 84
    Par défaut
    oui il trouve le répertoire car lorsque j'enlève la ligne qui crée la récursivité il m'affiche bien mes répertoires et sous répertoires mais il ne récupère pas toute l'arborescence.

    Par exemple :

    si le repertoire passé en paramètre contient ceci : monrepertoire/test/rep/rep2/

    il m'affichera bien le répertoire test avant son enfant rep mais il me manquera rep2 et tous ces enfants.

    Ce que je n'arrive pas, c'est afficher l'arborescence entière du répertoire sélectionné.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 84
    Par défaut
    Voila pour vous:

    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
    private void RechercheDossier(string s,System.Web.UI.WebControls.TreeNode node)
        {
            //string[] fichiers;
            string[] repertoires;
            string[] tab_tmp;
            int k;
     
            repertoires = System.IO.Directory.GetDirectories(s);
     
                if (repertoires.Length != 0)
                {
                    for (int i = 0; i < repertoires.Length; i++)
                    {
                        tab_tmp = repertoires[i].Split(Caractere_Separateur);
                        k = tab_tmp.Length;
                        node.ChildNodes.Add(new System.Web.UI.WebControls.TreeNode(tab_tmp[k-1]));
                        RechercheDossier(Path.Combine(s, repertoires[i]),node.ChildNodes[i]);
                    }
                }
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Répertoire courant d'un Treeview
    Par Zhamy dans le forum C#
    Réponses: 0
    Dernier message: 06/05/2010, 14h41
  2. Lister un répertoire et tous ses sous répertoires dans un treeview
    Par shaun_the_sheep dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/09/2008, 08h37
  3. Treeview, afficher par défaut le répertoire utilisateur
    Par PDR dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/09/2008, 16h04
  4. Réponses: 23
    Dernier message: 23/05/2006, 16h52

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