【问题标题】:sharepoint caml query isn't working when querying by FileLeafRef通过 FileLeafRef 查询时,sharepoint caml 查询不起作用
【发布时间】:2014-02-19 12:35:05
【问题描述】:

我想从特定共享点站点中名为“页面”的列表中检索特定项目。我希望查询只返回与我正在查询的 FileLeafRef 关联的特定项目。我已经构建了一个 CAML 查询,我已经使用 SP CAML 查询帮助工具进行了测试,所以我认为 CAML 查询很好;我只是不知道如何使用客户端上下文查询项目。这是我现有的代码:

    Dim FileLeafRef As String = "SomeArbitrarilyNamedThing.aspx"

    Dim clientContext As New Microsoft.SharePoint.Client.ClientContext("http://myfqdn/newsandmedia/companynews")
    Dim theList As Microsoft.SharePoint.Client.List = clientContext.Web.Lists.GetByTitle("Pages")

    Dim camlQuery As New Microsoft.SharePoint.Client.CamlQuery()

    camlQuery.ViewXml = String.Format("<Query><Where><Eq><FieldRef Name=""FileLeafRef"" /><Value Type=""Text"">{0}</Value></Eq></Where></Query>", FileLeafRef)
    Console.WriteLine(camlQuery.ViewXml)


    Dim listItems As Microsoft.SharePoint.Client.ListItemCollection = theList.GetItems(camlQuery)

    clientContext.Load(theList)
    clientContext.Load(listItems)
    clientContext.ExecuteQuery()

在调用 ExecuteQuery 之后,当我查看 listItems 集合时,它有不止一个我要查询的项目。 (特别是它有 15 个,但应该只有一个带有请求的 FileLeafRef 的项目)。任何人都可以通过确定此代码的问题来帮助我吗?

谢谢

编辑:我发现如果我用 View 标签包装 camlQuery xml,它会返回我想要的列表项。我不知道为什么。谁能解释这些标签在这种情况下的作用,以及为什么查询最初返回 15 个结果而不是 1 个?

【问题讨论】:

    标签: vb.net sharepoint sharepoint-2010 caml


    【解决方案1】:

    这是因为客户端上下文 CamlQuery 对象不仅接受查询而且接受整个视图。这就是您需要提供 View xml 的原因。你可以找到视图元素结构here

    可能最初它返回了 15 个项目,因为您查看的 xml 不正确。我猜它返回了列表中的所有项目。我之前在使用服务器对象模型时看到过这种行为 - 如果您的 caml 查询结构不正确或有任何错误,则返回所有列表项。

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多