Как создать подпапку в подпапке SharePoint Online C # - PullRequest
0 голосов
/ 01 июня 2018

Я хочу создать несколько папок в библиотеке документов на C #.

Структура папок должна быть следующей в библиотеке документов:

"98_Projekte" -> "Muster Mandant"-> «Подпапка 01 Test»

В моем коде C # я создаю только подпапку «Muster Mandant» в «98_Projekte».Это правильно, но я хочу впоследствии создать новые подпапки в "Muster Mandant" (см. Второй раздел foreach).

        public static void AddFolder(ClientContext context, string[] folders)
    {
        Web web = context.Web;
        var docLibrary = web.DefaultDocumentLibrary().RootFolder;
        context.Load(docLibrary);
        context.ExecuteQuery();

        foreach (Microsoft.SharePoint.Client.Folder subFolder in docLibrary.Folders)
        {
            if (subFolder.Name == "98_Projekte")
            {
                subFolder.Folders.Add("Muster Mandant");
                context.ExecuteQuery();
                docLibrary = subFolder;
                docLibrary.Update();
            }
        }
        foreach (Microsoft.SharePoint.Client.Folder subSubFolder in docLibrary.Folders)
        {
            if (subSubFolder.Name == "Muster Mandant")
            {
                foreach (string folder in folders)
                {
                    subSubFolder.Folders.Add(folder);
                }
            }
        }
        context.ExecuteQuery();
    }
}

Есть ли у вас какие-либо решения?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы можете проверить код ниже.

 public static Folder AddSubFolder(ClientContext context, Folder ParentFolder, string folderName)
        {
            Folder resultFolder=ParentFolder.Folders.Add(folderName);
            context.ExecuteQuery();
            return resultFolder;   
        }

        static void Main(string[] args)
        {
            using (var context = new ClientContext("https://domain.sharepoint.com/sites/TST/"))
            {
                string password = "pw";
                SecureString sec_pass = new SecureString();
                Array.ForEach(password.ToArray(), sec_pass.AppendChar);
                sec_pass.MakeReadOnly();
                context.Credentials = new SharePointOnlineCredentials("lee@domain.onmicrosoft.com", sec_pass);               

                Web web = context.Web;
                var folders = web.DefaultDocumentLibrary().RootFolder.Folders;
                context.Load(folders);
                context.ExecuteQuery();

                foreach (Folder subFolder in folders)
                {
                    if (subFolder.Name == "98_Projekte")
                    {
                       Folder parent1= AddSubFolder(context,subFolder,"Muster Mandant");
                       AddSubFolder(context, parent1, "01 Test Subfolder");   
                    }
                }

                Console.WriteLine("Done");
                Console.ReadKey();
            }

        }
0 голосов
/ 02 июня 2018

Мне кажется, проблема в том, что ваш код ожидает, что свойство .Folders будет содержать все папки (рекурсивные), и вместо этого вы просто получаете прямые дочерние элементы корневой папки.Во втором цикле проверьте контекст свойства / коллекции docLibrary.Folders и посмотрите, что возвращается.

...