【问题标题】:How to get a SharePoint List Item By Unique Id如何按唯一 ID 获取 SharePoint 列表项
【发布时间】:2012-12-19 11:09:22
【问题描述】:

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

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

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

GetItemById() 方法有什么问题?

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

编辑

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

MSDN Documentation

【问题讨论】:

  • 使用 guid 获得该项目是否幸运?

标签: sharepoint-2010 get uniqueidentifier sharepoint-clientobject


【解决方案1】:

试试这个:

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

【讨论】:

  • 谢谢,但此方法未在 Microsoft.SharePoint.Client 中提供。我已经更新了问题并在 MSDN 文档中提供了参考。
【解决方案2】:

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

MSDN documentation on GetItemByUniqueId

【讨论】:

  • 谢谢,但此方法未在 Microsoft.SharePoint.Client 中提供。我已经更新了问题并在 MSDN 文档中提供了参考。
【解决方案3】:

我可以用以下方法做到这一点,如果它看起来可行,需要你的建议

            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】:

    spliste.Items[&lt;uniqueId&gt;] 应该可以工作。

    例如:

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

    如果要获取该item的某个字段的内容:

    string content = spliste.Items[<uniqeId>][<fieldGuidOrDisplayName>].ToString();
    

    例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多