none
Не пойму как создавать фолдеры в списке RRS feed

  • Вопрос

  • Вот есть код, взятый по ссылке Programmatically create a folder in a list

                                var folderPath = "Финансовый департамент"; 
    

    var dp = "/" + destList.RootFolder.Url + "/" + folderPath;

    SPListItem subFolderItem = list.Items.Add(dp, SPFileSystemObjectType.Folder); subFolderItem["Title"] = folderPath; subFolderItem.Update();

    И на последней строке я ловлю


    Error: Microsoft.SharePoint.SPException: Эта операция может быть выполнена только для файла; "http://ctc-vm:7777/Lists/List3/Финансовый департамент/Финансовый департамент" является папкой. ---> System.Runtime.InteropServices.COMException: Эта операция может быть выполнена только для файла; "http://ctc-vm:7777/Lists/List3/Финансовый департамент/Финансовый департамент" является папкой.

    Как мне добавить фолдер в список (не в библиотеку, а именно в список)?

    27 марта 2014 г. 8:13

Ответы

  • У вас ошибка в путях.

    Попробуйте вот так:

    using (SPSite site = new SPSite("http://server/sites/web/"))
    {
       using (SPWeb web = site.OpenWeb())
       {
           SPList list = web.Lists.TryGetList("Название списка");
           SPListItem folderColl = list.Items.Add(list.RootFolder.ServerRelativeUrl,SPFileSystemObjectType.Folder);
           folderColl["Title"] ="Название папки";
           folderColl.Update();
           list.Update();
        }
    }

    Для добавления подпапки:

    using (SPSite site = new SPSite("http://server/sites/web/"))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists.TryGetList("Название списка");
                        if (list != null)
                        {
                            foreach (SPListItem item in list.Folders) // код для теста, не оптимальный по производительности
                            {
                                if (item.Title == "Название папки")
                                {
                                    SPListItem newItem = list.AddItem(item.Folder.ServerRelativeUrl, SPFileSystemObjectType.Folder);
                                    newItem["Title"] = "Название подпапки";
                                    newItem.Update();
                                }
                            }                       
                        }
                    }
                }

    И проверьте, что разрешено создание папок в списке!



    27 марта 2014 г. 8:40

Все ответы

  • У вас ошибка в путях.

    Попробуйте вот так:

    using (SPSite site = new SPSite("http://server/sites/web/"))
    {
       using (SPWeb web = site.OpenWeb())
       {
           SPList list = web.Lists.TryGetList("Название списка");
           SPListItem folderColl = list.Items.Add(list.RootFolder.ServerRelativeUrl,SPFileSystemObjectType.Folder);
           folderColl["Title"] ="Название папки";
           folderColl.Update();
           list.Update();
        }
    }

    Для добавления подпапки:

    using (SPSite site = new SPSite("http://server/sites/web/"))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists.TryGetList("Название списка");
                        if (list != null)
                        {
                            foreach (SPListItem item in list.Folders) // код для теста, не оптимальный по производительности
                            {
                                if (item.Title == "Название папки")
                                {
                                    SPListItem newItem = list.AddItem(item.Folder.ServerRelativeUrl, SPFileSystemObjectType.Folder);
                                    newItem["Title"] = "Название подпапки";
                                    newItem.Update();
                                }
                            }                       
                        }
                    }
                }

    И проверьте, что разрешено создание папок в списке!



    27 марта 2014 г. 8:40
  • SPListItem newItem = list.AddItem(item.Folder.ServerRelativeUrl, SPFileSystemObjectType.File);

    А тут точно File, a не Folder?

    27 марта 2014 г. 8:54
  • SPListItem newItem = list.AddItem(item.Folder.ServerRelativeUrl, SPFileSystemObjectType.File);

    А тут точно File, a не Folder?

    Конечно Folder, опечатка :)
    27 марта 2014 г. 12:31