【发布时间】:2011-11-18 11:16:36
【问题描述】:
我正在尝试从唯一 ID (GUID) 获取 SPListItem 对象。通过查看几个网站(包括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);
但是,无论如何...我似乎总是返回零行。我不明白为什么,因为我知道我使用的 Guid 是正确的。
有什么想法吗?
【问题讨论】:
-
您是否考虑过在查询中添加递归类型?您能否向我们展示您在 GUID 中传递的方式和位置以及以何种形式传递?您只关心列表项而不关心列表、网站或网站吗?您知道该项目的目标列表或网络吗?您是否仅限于使用 CAML?你知道
$listItem = $spList.GetItemByUniqueId($targetGuid)方法吗?如您所见,有许多问题需要回答才能提供有意义的答案。
标签: c# sharepoint