I have a loop that is looping through a document library like in the example below.
foreach (SPListItem item in DocumentLibrary)
{
}
How do I tell if the SPListItem
is a document or a folder?
I have a loop that is looping through a document library like in the example below.
foreach (SPListItem item in DocumentLibrary)
{
}
How do I tell if the SPListItem
is a document or a folder?
The Folder property of the list item will be null
if the item is not a folder, so you can write:
public bool IsFolder(SPListItem item)
{
return item.Folder != null;
}
In the same way, the File property of the item will be null
if the item is not a document. However, the documentation advises against using this property in that case:
The
File
property also returnsnull
if the item is a folder, or if the item is not located in a document library, although it is not recommended that you call this property in these cases.
An alternate way is to check the BaseType property of the list:
public bool IsDocument(SPListItem item)
{
return !IsFolder(item)
&& item.ParentList.BaseType == SPBaseType.DocumentLibrary;
}
Use SPFileSystemObjectType enumeration. Here's a sample...
foreach (SPListItem item in docLib.Items)
{
if (item.FileSystemObjectType == SPFileSystemObjectType.Folder)
{
// item is a folder
...
}
else if (item.FileSystemObjectType == SPFileSystemObjectType.File)
{
// item is a file
...
}
}
if (item.Folder!=null)
// item is Folder and Folder will hold the SPFolder class
I think the safest way is to check the FileSystemObjectType property
if (oitem.ContentType.Name == spWeb.AvailableContentTypes[SPBuiltInContentTypeId.Folder].Name)
{
Console.WriteLine("Folder Name: " + oitem.Name.ToString());
}
© 2022 - 2024 — McMap. All rights reserved.