Question

J'utilise le modèle objet client sharepoint pour une petite application. Lorsque je tente d'obtenir tous les dossiers et les éléments des « Documents partagés » -library, il ne retourne pas tous les dossiers et fichiers.

code:

  private void SearchFolder(ClientContext context, SP.Folder folder, SP.List list, int niveau)
    {
        SP.FolderCollection collection = folder.Folders;
        context.Load(collection);
        context.ExecuteQuery();

        //Search subfolders
        foreach (SP.Folder tempFolder in collection)
        {
            string tempFolderNaam = tempFolder.Name;
            SearchFolder(context, tempFolder, list, ++niveau);
        }

        //Search this folder
        SearchFiles(context, folder, list, niveau);
    }

J'appelle cette méthode avec:
SearchFolder (contexte, list.RootFolder, liste, 0)
Ainsi, il commence à partir du RootFolder et doit obtenir tous les fichiers (sous) et les dossiers (sous)

J'ai 10 dossiers dans le RootFolder et 1 sous-dossier dans le premier. Il retourne seulement 5 (4 sont ok, on est "Formulaires" -folder)

Y at-il quelque chose que je suis absent / as fait de mal? Ou est-ce un bug?

Merci à l'avance!

Était-ce utile?

La solution

Juste basé sur la recherche à votre code, plutôt que la connaissance de l'OM client, je remarque que vous appelez récursive SearchFolder sur le même objet de contexte client. Pendant que vous Itère votre objet de collection, vous chargez une autre collection et l'appel à execute, ce qui pourrait re-charger la collection définie au plus haut niveau dans la pile d'appels. Il pourrait être utile de créer un nouvel objet de contexte dans la méthode plutôt que de passer l'existant à travers la hiérarchie d'appel, juste pour vous assurer que ne cause pas un problème.

Une autre façon de traiter l'ensemble des documents en utilisant CAML est tel que décrit sur msdn en utilisant le champ d'application = attribut 'récursif'.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top