2010-05-20 16 views
2

Est-il possible d'obtenir une liste de tous les dossiers dans une bibliothèque de documents SharePoint, en utilisant SPQuery?énumèrent tous les dossiers dans une liste SharePoint récursive

Quelque chose que vous pourriez obtenir dans le système de fichiers, si vous ouvriez invite de commande Windows et a couru

dir /b /A:D /S 

Le problème est, si vous créez simple SPQuery et définir les viewAttributes à Scope='RecursiveAll', le jeu de résultats contient des éléments, mais pas les dossiers.

Ou est-ce qu'il me manque complètement quelque chose?

Upd .: La raison de cette question est (était) que je dois créer une solution où un « paquet de fichiers » est logique.
Lorsque mon client parle d'un «document», il signifie réellement une entité qui peut se composer de plusieurs fichiers et d'un ensemble commun de métadonnées pour ces fichiers. Par exemple, le document peut être nommé «Une lettre à ma grand-mère» (attributs: adresse de grand-mère, titre de lettre), mais il se compose de plusieurs fichiers: la lettre dans le document MS Word et une image JPEG.

Ainsi, l'idée était que je pouvais créer un type de contenu dérivé du dossier et y ajouter des champs à ce type de contenu (adresse, titre). Tous les fichiers placés dans ce dossier deviendront naturellement des parties du 'document'.

Puisque nous attendons à ce qu'il y aura beaucoup de ces documents, nous créons une hiérarchie de dossiers de type régulier des dossiers aussi.

Maintenant, nous arrivons à la question: comment puis-je montrer une vue comme « documents récents » à mon client? Cela doit fonctionner récursivement pour énumérer tous les "documents". La récursion par SPFolder est trop lente en raison du nombre de requêtes à effectuer. Nous espérions un SPQuery récursif, mais cela ne semble pas résolu de cette façon.

+0

Dupe de http://stackoverflow.com/questions/1557675/caml-query-that-includes-folders-in-result-set Malheureusement pas clair à ce poste si son été résolu ou non – Ryan

+0

Y a-t-il une raison particulière pour laquelle vous essayez d'interroger tous les dossiers au lieu d'itérer via SPList.Folders? Je fais des tests de requête maintenant, mais je suis curieux à ce sujet. –

+0

@ccornet, oui je ne veux pas le faire de manière itérative. Mise à jour de mon message pour montrer les détails. – naivists

Répondre

1

Vous devriez être en mesure d'obtenir tous les dossiers en filtrant sur le type de contenu.

<Eq><FieldRef Name='ContentType' /><Value Type='Text'>Folder</Value></Eq> 
+0

Cela fonctionne pour les éléments du dossier dans lequel vous êtes actuellement. J'ai une hiérarchie de dossiers dans laquelle je dois sélectionner uniquement des dossiers spécifiques _some_ (étant de type de contenu différent). Voir ma mise à jour de poste pour plus de détails. – naivists