有人可以帮助我在不使用List的情况下通过SharePoint中的唯一ID获取列表项吗?我知道列表项唯一ID,但我没有关于列表的信息。使用客户端对象模型我可以执行以下操作:
using (SP.ClientContext clientContext = new SP.ClientContext(...))
{
**SP.List list = clientContext.Web.Lists.GetById(listId);**
SP.ListItem listItem = list.GetItemById(listItemId);
clientContext.Load(listItem);
clientContext.ExecuteQuery();
...
}
不幸的是,在这段代码中我使用listId,但问题是在我的任务中我不知道listId,我只有ListItem Guid。由于我有唯一的ID,我相信必须有一种方法来获取此项而不使用任何其他信息。
答案 0 :(得分:8)
您已发布了一个包含客户端对象模型的代码段,因此我认为它是解决方案的优先对象模型。但是,如果您可以接受,我已经找到了一些有关如何使用服务器端对象模型实现此目的的信息,您可能会觉得这很有帮助。
如果项目存在于根网站中,似乎可以使用SPWeb.GetFile(Guid itemGuid)
完成此操作。
如果您希望它也适用于子网站,您可以使用SPWeb.GetSiteData方法调用caml检索项目,如本文所述:http://www.chakkaradeep.com/post/Retrieving-an-Item-from-the-RootWeb-and-Subwebs-using-its-UniqueId.aspx。
您还可以在SO上查看此主题以获取更多信息: SharePoint: Get SPListItem by Unique ID
如果您在使用这些方法时遇到任何问题,请与我们联系。我还会寻找使用客户端对象模型运行的替代方案,如果我找到一些,我会发布它们,但是,它似乎更难实现。