我有一个循环遍历文档库,如下例所示。
foreach (SPListItem item in DocumentLibrary)
{
}
如何判断SPListItem
是文档还是文件夹?
答案 0 :(得分:14)
如果项目不是文件夹,则列表项的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;
}
答案 1 :(得分:7)
使用 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
...
}
}
答案 2 :(得分:2)
if (item.Folder!=null)
// item is Folder and Folder will hold the SPFolder class
答案 3 :(得分:2)
if( item["ContentType"].ToString() == "Folder")
答案 4 :(得分:1)
我认为最安全的方法是检查FileSystemObjectType property
答案 5 :(得分:0)
if (oitem.ContentType.Name == spWeb.AvailableContentTypes[SPBuiltInContentTypeId.Folder].Name)
{
Console.WriteLine("Folder Name: " + oitem.Name.ToString());
}