递归枚举SharePoint列表中的所有文件夹

时间:2010-05-20 07:39:52

标签: sharepoint document-library spquery

是否可以使用SPQuery获取SharePoint文档库中所有文件夹的列表?

如果您打开Windows命令提示符并运行

,则可以在文件系统中获得某些内容
 dir /b /A:D /S

问题是,如果您创建一个简单的SPQuery并将viewAttributes设置为Scope='RecursiveAll',则结果集包含项目,但不包含文件夹。

或者我完全错过了什么?

更新:这个问题的原因是我必须创建一个“文件包”才有意义的解决方案。
当我的客户谈到“文档”时,他实际上意味着一个实体可能包含多个文件和这些文件的一组通用元数据。

例如,文档可能被命名为“给我奶奶的一封信”(属性:奶奶的地址,字母标题),但它包含几个文件:MS Word文档中的实际字母和一张JPEG图片。

所以,我的想法是我可以创建一个从Folder派生的内容类型,并为这个内容类型(地址,标题)添加一些字段。放入该文件夹的所有文件自然会成为“文档”的一部分。

由于我们希望会有很多此类文档,因此我们也会创建常规类型文件夹的文件夹层次结构。

现在,我们来问一个问题:如何向我的客户端显示“最近的文档”这样的视图?这必须以递归方式工作以枚举所有“文档”。由于必须进行的请求数量过多,SPFolder个对象的递归速度太慢。我们希望递归SPQuery,但这似乎不是可以解决的。

1 个答案:

答案 0 :(得分:1)

您应该可以通过过滤内容类型来获取所有文件夹。

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