【问题标题】:CAML query to locate specific SPFolder nested in document library treeCAML 查询以定位嵌套在文档库树中的特定 SPFolder
【发布时间】:2010-12-15 04:27:13
【问题描述】:

在搜索 SPFolders 而不是文件时,或者在搜索自定义内容类型时,使用 CAML 和 SPQuery 进行搜索似乎无法针对自定义元数据正常工作。我一直在使用 U2U 来测试各种查询,但没有任何结果。该文档的主题不是很完整,谷歌也没有提供帮助。

在一项测试中,我试图在树中找到任何属于特定自定义内容类型的 SPFolder。如果我正确理解 CAML,这应该有效:

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

在另一个测试中,我试图找到任何将自定义元数据属性设置为特定值的 SPFolder。

<Query>
    <Where>
        <Eq>
            <FieldRef Name='CustomProp' />
            <Value Type='Text'>SpecificPropValue</Value>
        </Eq>
    </Where>
</Query>

在这两种情况下,我都将搜索的根设置为包含文件夹的文档库,其中包含文件夹,其中包含文件夹(唷。)另外,我将 SPQuery 设置为递归搜索。

我正在搜索的文件夹向下两步是树中最下方的文件夹。我不想一直迭代以手动找到有问题的文件夹。

编辑 知道我同时使用带有 SPQuery 作为参数的 SPList.GetItems 和带有 SPSiteDataQuery 作为参数的 SPWeb.GetSiteData 也可能会有所帮助。目前,这些查询中的任何一个的搜索集中似乎都不包含文件夹。

任何帮助将不胜感激。

【问题讨论】:

    标签: sharepoint caml


    【解决方案1】:

    经过更多研究,我正在回答我自己的问题。

    显然,我用来查询的方法不会将 SPFolders 作为结果集中的项目返回。只返回列表项,基本上只是文档。

    我的解决方法是对具有特定元数据标记/值的所有文档执行 CAML 查询,然后使用第一个文档的父文件夹作为集合的代表文件夹。可以很好地满足我的需求。

    【讨论】:

      【解决方案2】:

      尝试将SharePoint Manager 和Stramit CAML Viewer 添加到您的工具集中。

      我发现两者对于找出 CAML 问题都非常重要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-21
        • 1970-01-01
        • 2018-03-09
        • 1970-01-01
        • 2023-03-27
        • 2022-09-24
        相关资源
        最近更新 更多