2009-04-20 9 views
2

En utilisant le code suivant:Comment déterminer si un dossier est imbriqué dans une liste SharePoint

using (SPSite site = new SPSite("http://localhost/")) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
     foreach (SPList list in web.Lists) 
     { 
      if (list.OnQuickLaunch) 
      { 
       Console.WriteLine(list.Title); 

       foreach (SPListItem item in list.Folders) 
       { 
        Console.WriteLine("- " + item.Title); 
       } 
      } 
     } 
    } 
} 

et la sortie:

... various lists ... 
Shared Documents 
- Minutes 
- Second Level 

Je reçois tous les dossiers arrière comme plat - pas indication réelle de l'imbrication qui peut se produire lorsqu'un dossier est créé en tant qu'enfant d'un autre dossier. Spelunking autour avec Visual Studio Je peux voir quelques propriétés intéressantes qui pourraient me donner quelques indices (comme item.Url et counting/characters ou item.Folder.ParentFolder comparé à quelque chose?), Mais il doit y avoir une manière plus simple.

Merci!

Répondre

3

Vous pouvez parcourir la hiérarchie de dossiers à partir du dossier racine de n'importe quelle liste, c'est-à-dire list.RootFolder. Ayant l'objet SPFolder racine, vous pouvez commencer à parcourir la hiérarchie récursivement en utilisant la propriété SubFolders sur chaque objet SPFolder.

1

Vous pouvez aimer vérifier la question suivante pour les réponses. Bien que ce ne soit pas la même question, le problème sous-jacent est similaire.

Should I create my own object model.

Questions connexes