Лучший отвечающий
Не пойму как создавать фолдеры в списке

Вопрос
-
Вот есть код, взятый по ссылке 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(); } } } } }
И проверьте, что разрешено создание папок в списке!
- Изменено Maxim Shusharin 27 марта 2014 г. 12:32 File -> Folder
- Предложено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 27 марта 2014 г. 12:40
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 28 марта 2014 г. 6:34
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(); } } } } }
И проверьте, что разрешено создание папок в списке!
- Изменено Maxim Shusharin 27 марта 2014 г. 12:32 File -> Folder
- Предложено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 27 марта 2014 г. 12:40
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 28 марта 2014 г. 6:34
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?
27 марта 2014 г. 12:31