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

发布于 2024-11-18 23:45:12 字数 150 浏览 6 评论 0原文

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

foreach (SPListItem item in DocumentLibrary)
{
}

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

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

╰◇生如夏花灿烂 2024-11-25 23:45:12

列表项的 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;
}

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 returns null 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;
}
时光倒影 2024-11-25 23:45:12

使用 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
        ...
    }
}

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
        ...
    }
}
成熟稳重的好男人 2024-11-25 23:45:12
if( item["ContentType"].ToString() == "Folder")
if( item["ContentType"].ToString() == "Folder")
栀子花开つ 2024-11-25 23:45:12
if (item.Folder!=null) 
  // item is Folder and Folder will hold the SPFolder class
if (item.Folder!=null) 
  // item is Folder and Folder will hold the SPFolder class
锦上情书 2024-11-25 23:45:12

我认为最安全的方法是检查 FileSystemObjectType 属性

I think the safest way is to check the FileSystemObjectType property

墨洒年华 2024-11-25 23:45:12
if (oitem.ContentType.Name == spWeb.AvailableContentTypes[SPBuiltInContentTypeId.Folder].Name)
                        {
                            Console.WriteLine("Folder Name: " + oitem.Name.ToString());
                        }
if (oitem.ContentType.Name == spWeb.AvailableContentTypes[SPBuiltInContentTypeId.Folder].Name)
                        {
                            Console.WriteLine("Folder Name: " + oitem.Name.ToString());
                        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文