【问题标题】:SPSiteDataQuery: Filtering Content Types in SharePoint 2010SPSiteDataQuery:筛选 SharePoint 2010 中的内容类型
【发布时间】:2010-11-02 05:22:17
【问题描述】:

在 SharePoint 2007 中,使用内容类型的过滤器执行 SPSiteDataQuery 按预期工作。

<Where>
  <Eq>
    <FieldRef Name='ContentType'/>
    <Value Type='Text'>SomeContentType</Value>
  </Eq>
</Where>

在 SharePoint 2010 中,相同的查询仅返回一个列表中的项目。 一种可能的解决方法是过滤内容类型 ID。必须使用“BeginsWith”运算符,因为“列表内容类型”继承自“站点内容类型”:

<Where>
  <BeginsWith>
    <FieldRef Name='ContentTypeID'/>
    <Value Type='Text'>SomeContentTypeId</Value>
  </BeginsWith>
</Where>

但这将匹配具有此内容类型或任何继承内容类型的所有项目。这不是我想要的。

有谁知道如何使用内容类型过滤器创建SPSiteDataQuery

【问题讨论】:

  • 我喜欢能够选择所有继承的内容类型的美妙之处。为什么你用BeginsWith选择ID,而不是你可以选择具体的内容类型,甚至EndsWith?!
  • CAML 中没有EndsWith 元素,是吗?
  • 你是对的,对不起。但Contains 确实存在。
  • 您找到解决方案了吗?我目睹了使用内容类型名称的一些奇怪的事情如下:
  • Home &gt; News &gt; multiple year webs 的层次结构。内容类型位于年度网站内!根处的查询不会返回任何内容,而“新闻”级别的查询确实会返回一些内容。所以它可以做交叉列表!?只是不在根级别。错误!?

标签: sharepoint sharepoint-2010 spsitedataquery


【解决方案1】:

试试这个(参见 computed 值类型):

<Where>
  <Eq>
    <FieldRef Name='ContentType'/>
    <Value Type='Computed'>SomeContentType</Value>
  </Eq>
</Where>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-09
    • 2011-09-19
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多