Как определить, является ли SPListItem документом или папкой
У меня есть цикл, который перебирает библиотеку документов, как в примере ниже.
foreach (SPListItem item in DocumentLibrary)
{
}
Как определить, является ли SPListItem
документ или папка?
Ответы
Ответ 1
Свойство Folder элемента списка будет null
, если элемент не является папкой, поэтому вы можете написать:
public bool IsFolder(SPListItem item)
{
return item.Folder != null;
}
Таким же образом свойство File будет null
, если элемент не является документом. Однако в документации не рекомендуется использовать это свойство в этом случае:
Свойство File
также возвращает null
, если элемент - это папка, или если элемент не находится в библиотеке документов, хотя не рекомендуется, чтобы вы вызываете это свойство в этих случаях.
Альтернативный способ - проверить свойство BaseType в списке:
public bool IsDocument(SPListItem item)
{
return !IsFolder(item)
&& item.ParentList.BaseType == SPBaseType.DocumentLibrary;
}
Ответ 2
Использовать перечисление SPFileSystemObjectType.
Здесь образец...
foreach (элемент SPListItem в docLib.Items)
{
if (item.FileSystemObjectType == SPFileSystemObjectType. Папка)
{
//item - это папка
...
}
else if (item.FileSystemObjectType == SPFileSystemObjectType. Файл)
{
//item - файл
...
}
}
Ответ 3
if (item.Folder!=null)
// item is Folder and Folder will hold the SPFolder class
Ответ 4
if( item["ContentType"].ToString() == "Folder")
Ответ 5
Я думаю, что самый безопасный способ - проверить свойство FileSystemObjectType
Ответ 6
if (oitem.ContentType.Name == spWeb.AvailableContentTypes[SPBuiltInContentTypeId.Folder].Name)
{
Console.WriteLine("Folder Name: " + oitem.Name.ToString());
}