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

时间:2012-12-19 11:09:23

标签: sharepoint-2010 get uniqueidentifier client-object-model

如果我知道相关的列表ID,是否可以通过唯一ID(无需编写Caml请求)获取SP列表项。

var item = list.GetItemById("CFA9E204-6509-424B-A246-0DE5295C42B2");

当我尝试使用此代码获取项目时,收到错误:“输入字符串的格式不正确。”

GetItemById()方法有什么问题?

为什么它只有一个字符串参数的重载方法GetItemById(),如果它只能理解整数Id?

修改

我使用SharePoint客户端对象模型,其中List实体没有方法GetItemByUniqueId(),但它有GetItemById()方法,它接收字符串或整数Id。

MSDN Documentation

5 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:2)

是的,可以通过它的唯一标识符加载listitem。您可以使用SPList.GetItemByUniqueId方法

请参阅MSDN documentation on GetItemByUniqueId

答案 2 :(得分:1)

看看这个帖子..可能你会得到一些想法..

  

Get List Item by Guid without List in SharePoint

答案 3 :(得分: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();

答案 4 :(得分: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();