list.ParentWeb.GetFolder方法的唯一ID

时间:2014-03-09 15:43:23

标签: sharepoint sharepoint-2010 sharepoint-2007

我有一个包含文件夹的SharePoint自定义列表。每个文件夹中都有项目。 文件夹名称是Folder1,Folder2,Folder3 ....所以。

我希望在迭代中通过其唯一ID获取每个文件夹。

 SPFolder folder = list.ParentWeb.GetFolder(new Guid("{xxxxx-xxxx-xxxxxx-xxxx}"));

如何找到每个文件夹的唯一ID?即GUID在括号中定义。

谢谢...

2 个答案:

答案 0 :(得分:1)

我真的不明白为什么你想根据guid获取文件夹,如果你可以获取你可能已经拥有该文件夹的guid。

我通常会使用扩展来解决这个问题。这是您正在寻找的变种

using Microsoft.SharePoint;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Herlitz.Common.Extensions
{
    public static class SPListItemCollectionExtensions
    {
        /// <summary>
        /// Get a folder by it's guid
        /// </summary>
        /// <param name="spListItemCollection"></param>
        /// <param name="uniqueId"></param>
        /// <returns>SPFolder or Null</returns>
        public static SPFolder GetFolderByGuid(this SPListItemCollection spListItemCollection, Guid uniqueId)
        {
            var firstOrDefault = spListItemCollection.Cast<SPListItem>().FirstOrDefault(x => x.UniqueId.Equals(uniqueId));
            return firstOrDefault != null ? firstOrDefault.Folder : null;
        }
    }
}

并查询

using (SPSite site = new SPSite(spSiteUrl))
{
    using (SPWeb web = site.RootWeb)
    {
        SPList myList = web.GetList("thelist");
        SPFolder theFolder = myList.Folders.GetFolderByGuid(new Guid("{c4819d5f-276e-4923-81cd-a3b014f1db6g}"));
    }
}

答案 1 :(得分:1)

SPFolder具有UniqueId属性。你可以在SPWeb.GetFolder方法中使用Guid作为参数。