【发布时间】:2011-10-01 05:12:11
【问题描述】:
我有一个循环遍历文档库,如下例所示。
foreach (SPListItem item in DocumentLibrary)
{
}
如何判断SPListItem 是文档还是文件夹?
【问题讨论】:
标签: sharepoint sharepoint-2010 web-parts
我有一个循环遍历文档库,如下例所示。
foreach (SPListItem item in DocumentLibrary)
{
}
如何判断SPListItem 是文档还是文件夹?
【问题讨论】:
标签: sharepoint sharepoint-2010 web-parts
如果列表项不是文件夹,则列表项的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 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["ContentType"].ToString() == "Folder")
【讨论】:
if (item.Folder!=null)
// item is Folder and Folder will hold the SPFolder class
【讨论】:
我认为最安全的方法是查看FileSystemObjectType property
【讨论】:
if (oitem.ContentType.Name == spWeb.AvailableContentTypes[SPBuiltInContentTypeId.Folder].Name)
{
Console.WriteLine("Folder Name: " + oitem.Name.ToString());
}
【讨论】: