如何通过唯一标识获取SharePoint列表项

5
如果我知道相关的列表ID,是否可以通过唯一ID获取SP列表项(而不编写Caml请求)?
var item = list.GetItemById("CFA9E204-6509-424B-A246-0DE5295C42B2");

当我尝试使用这段代码获取项目时,出现了错误:“输入字符串的格式不正确。”
GetItemById()方法有什么问题?
为什么它有一个带有字符串参数的重载方法GetItemById(),如果它只理解整数Id?
编辑:我使用SharePoint客户端对象模型,其中List实体没有GetItemByUniqueId()方法,但它有GetItemById()方法,可以接收字符串或整数Id。 MSDN文档

1
使用 GUID 获取该项成功了吗? - Jorge
4个回答

4
尝试这个:

SPListItem item = list.GetItemByUniqueId(new Guid("CFA9E204-6509-424B-A246-0DE5295C42B2"));

请注意,此代码与it技术有关。

谢谢,但这种方法在Microsoft.SharePoint.Client中没有提供。我已经更新了问题并提供了MSDN文档的参考。 - Warlock

2

谢谢,但这种方法在Microsoft.SharePoint.Client中没有提供。我已经更新了问题并提供了MSDN文档的参考。 - Warlock

1
我用以下方法完成了它,如果这个方法看起来可行,请给予您的建议。
            CamlQuery cQuery = new CamlQuery();

            cQuery.ViewXml = string.Format(@"<View Scope='RecursiveAll'>
                                                      <Query>
                                                        <Where>
                                                          <Eq>
                                                            <FieldRef Name='UniqueId' />
                                                            <Value Type='Guid'>{0}</Value>
                                                          </Eq>
                                                        </Where>
                                                      </Query>
                                                    </View>", id);

            //ListItem item = listItem.GetItemById("293");

            ListItemCollection itemColl = listItem.GetItems(cQuery);

            sp.Context.Load(itemColl);

            sp.Context.ExecuteQuery();

            ListItem item = itemColl.FirstOrDefault();

0

spliste.Items[<uniqueId>] 应该可以工作。

例如:

Guid itemUniqueID = new Guid("bb49fd4e-c302-45ef-85dc-e12624423651");
SPListItem item = spliste.Items[itemUniqueID ];

如果您想获取该项某个字段的内容:
string content = spliste.Items[<uniqeId>][<fieldGuidOrDisplayName>].ToString();

例如:

Guid itemUniqueID = new Guid("bb49fd4e-c302-45ef-85dc-e12624423651");
string content = spliste.Items[itemUniqueID ]["Title"].ToString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接