Domanda

Sto utilizzando il modello a oggetti client di SharePoint per una piccola applicazione. Quando cerco di ottenere tutte le cartelle e gli elementi da "Documenti Condivisi" -library, non restituisce tutte le cartelle ei file.

Codice:

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

Io chiamo questo metodo con:
SearchFolder (contesto, list.RootFolder, elenco, 0)
Quindi si parte dal RootFolder e dovrebbe avere tutti i file (sub) e cartelle (sotto)

ho ottenuto 10 cartelle nella RootFolder e 1 sottocartella nella prima. Esso restituisce solo 5 (4 sono ok, uno è "Forms" -cartella)

C'è qualcosa che mi manca / ha sbagliato? O si tratta di un bug?

Grazie in anticipo!

È stato utile?

Soluzione

Proprio sulla base di guardare il codice, piuttosto che la conoscenza della OM Cliente, ho notato che si sta chiamando ricorsivamente SearchFolder sullo stesso oggetto contesto client. Mentre si sta scorrendo il vostro oggetto da collezione, che si sta caricando un'altra raccolta e chiamando Execute, che potrebbe ricaricare la collezione definita al livello più alto nello stack di chiamate. Potrebbe valere la pena di creare un nuovo oggetto contesto nel metodo, piuttosto che passare l'uno verso il basso esistente attraverso la gerarchia di richiamo, solo per assicurarsi che non sta causando un problema.

Un modo alternativo per l'elaborazione di tutti i documenti sta usando CAML come descritto a MSDN utilizzando l'Ambito = attributo 'ricorsivo'.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top