如何判断SPListItem是文档还是文件夹

时间:2011-07-08 11:33:52

标签: sharepoint sharepoint-2010 web-parts

我有一个循环遍历文档库,如下例所示。

foreach (SPListItem item in DocumentLibrary)
{
}

如何判断SPListItem是文档还是文件夹?

6 个答案:

答案 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());
                        }