在搜索SPFolders而不是文件时,或搜索自定义内容类型时,似乎使用CAML和SPQuery搜索无法正常使用自定义元数据。我一直在使用U2U测试各种查询,而不是在任何地方。该主题的文档不是很完整,谷歌也没有帮助。
在一个测试中,我试图在树中找到任何特定自定义内容类型的SPFolders。如果我正确理解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>
在这两种情况下,我都将搜索的根目录设置为包含文件夹的文档库,其中包含文件夹,其中包含文件夹(phew。)另外,我正在设置SPQuery以递归搜索。
我正在寻找两步的文件夹是树中最远的文件夹。我不想一直迭代来手动找到有问题的文件夹。
编辑知道我使用SPList.GetItems和SPQuery作为参数,以及SPWeb.GetSiteData和SPSiteDataQuery作为参数也可能会有所帮助。目前看来,这些查询的搜索集中都没有包含文件夹。
非常感谢任何帮助。
答案 0 :(得分:2)
经过更多的研究,我正在回答我自己的问题。
显然,我用来查询的方法不会将SPFolders作为结果集中的项返回。只返回列表项,基本上只是文档。
我的修复是对具有特定元数据标签/值的所有文档执行CAML查询,然后使用第一个文件的父文件夹作为集合的代表文件夹。适合我的需要。
答案 1 :(得分:1)
尝试将SharePoint Manager和Stramit CAML Viewer添加到您的工具集。
我发现两者对于解决CAML问题非常重要。