SharePoint:通过唯一ID获取SPListItem

本文关键字:ID 获取 SPListItem 唯一 SharePoint | 更新日期: 2023-09-27 18:15:00

我试图从唯一ID (GUID)获得SPListItem对象。通过查看几个网站(inc. http://sharepoint400.blogspot.com/2011/04/using-spsitedataquery-to-find-list.html和http://www.chakkaradeep.com/post/Retrieving-an-Item-from-the-RootWeb-and-Subwebs-using-its-UniqueId.aspx),我得出了下面的代码:

const string QueryFormat =
@"<Where>
    <Eq>
        <FieldRef Name='UniqueId' />
        <Value Type='Lookup'>{0}</Value>
    </Eq>
</Where>";
            SPSiteDataQuery query = new SPSiteDataQuery();
            query.Webs = "<Webs Scope='SiteCollection' />";
            query.Lists = "<Lists BaseType='0'/>";
            query.Query = string.Format(QueryFormat, itemUniqueId);
            query.RowLimit = 1;
            //query.ViewFields = "<FieldRef Name='WebID' /><FieldRef Name='ListID' /><FieldRef Name='ID' />";
            var results = SPContext.Current.Web.GetSiteData(query);

然而,无论如何……我似乎总是得到零行返回。我不明白为什么,因为我知道我使用的指南是正确的。

任何想法?

SharePoint:通过唯一ID获取SPListItem

唯一Id的类型无效,应该是Guid。更新查询:

<Where>
    <Eq>
        <FieldRef Name='UniqueId'/>
        <Value Type='Guid'>{0}</Value>
    </Eq>
</Where>

请尝试删除QueryFormat字符串中的所有空格。用这样的东西代替:

"<Where><Eq><FieldRef Name='"UniqueId'" /><Value Type='"Lookup'">{0}</Value></Eq></Where>"

SharePoint不喜欢这些空格。

我还建议使用其中一个库来生成Caml查询,如:http://camldotnet.codeplex.com/或http://camlex.codeplex.com/