Frage

Ich verwende das SharePoint Client -Objektmodell für eine kleine Anwendung. Wenn ich versuche, alle Ordner und Elemente aus den "gemeinsam genutzten Dokumenten" -Library zu erhalten, gibt es nicht alle Ordner und Dateien zurück.

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);
    }

Ich nenne diese Methode mit:
SearchFolder (Kontext, List.RootFolder, Liste, 0)
So startet es vom RootFolder und sollte alle (Sub-) Dateien und (Sub-) Ordner abrufen

Ich habe 10 Ordner im RootFolder und 1 Unterordner im ersten. Es gibt nur 5 zurück (4 sind in Ordnung, man ist "Formulare" -Folder)

Fehlt mir etwas/habe falsch gemacht? Oder ist das ein Fehler?

Danke im Voraus!

War es hilfreich?

Lösung

Ich basiert nur basierend auf der Betrachtung Ihres Codes und nicht auf der Kenntnis des Kunden -OM -Kenntnisses, ich stelle fest, dass Sie rekursiv SearchFolder im selben Client -Kontextobjekt anrufen. Während Sie Ihr Sammlungsobjekt iterieren, laden Sie eine andere Sammlung und rufen Sie aus, wodurch die auf dem Anrufstapel definierte Sammlung auf der höheren Ebene neu geladen wird. Möglicherweise lohnt es sich, ein neues Kontextobjekt in der Methode zu erstellen, anstatt das vorhandene durch die Anrufhierarchie zu bestehen, um sicherzustellen, dass dies kein Problem verursacht.

Eine alternative Methode zur Verarbeitung aller Dokumente besteht darin, CAML wie beschrieben zu verwenden msdn Verwenden des Scope = 'rekursives' Attributs.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top