У меня есть цикл, который перебирает библиотеку документов, как в примере ниже.
foreach (SPListItem item in DocumentLibrary)
{
}
Как определить, является ли SPListItem
документ или папка?
У меня есть цикл, который перебирает библиотеку документов, как в примере ниже.
foreach (SPListItem item in DocumentLibrary)
{
}
Как определить, является ли SPListItem
документ или папка?
Свойство 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;
}
Использовать перечисление SPFileSystemObjectType.
Здесь образец...
foreach (элемент SPListItem в docLib.Items)
{
if (item.FileSystemObjectType == SPFileSystemObjectType. Папка)
{
//item - это папка
...
}
else if (item.FileSystemObjectType == SPFileSystemObjectType. Файл)
{
//item - файл
...
}
}
if (item.Folder!=null)
// item is Folder and Folder will hold the SPFolder class
if( item["ContentType"].ToString() == "Folder")
Я думаю, что самый безопасный способ - проверить свойство FileSystemObjectType
if (oitem.ContentType.Name == spWeb.AvailableContentTypes[SPBuiltInContentTypeId.Folder].Name)
{
Console.WriteLine("Folder Name: " + oitem.Name.ToString());
}