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

发布于 2024-09-02 05:06:22 字数 734 浏览 5 评论 0原文

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

如果您打开 Windows 命令提示符并运行,您可以在文件系统中获得一些东西。

 dir /b /A:D /S

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

或者我完全错过了什么?

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

例如,文档可能被命名为“给我奶奶的一封信”(属性:奶奶的地址、信件标题),但它由多个文件组成:MS Word 文档中的实际信件和 JPEG 图片。

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

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

现在,我们遇到一个问题:如何向我的客户显示“最近的文档”之类的视图?这必须递归地枚举所有“文档”。由于必须发出的请求数量较多,通过 SPFolder 对象进行递归的速度太慢。我们希望有一个递归的SPQuery,但这似乎无法通过这种方式解决。

Is it possible to get a list of all folders in a SharePoint document library, using SPQuery?

Something you could get in file system, if you opened Windows command prompt and ran

 dir /b /A:D /S

The problem is, if you create a simple SPQuery and set the viewAttributes to Scope='RecursiveAll', the result set contains items, but not the folders.

Or am I completely missing something?

Upd.: The reason for this question is (was) that I have to create a solution where a "packet of files" makes sense.
When my client speaks about a "document", he actually means an entity that may consist of multiple files and a common set of metadata for these files.

For instance, the document might be named "A letter to my grandma" (attributes: grandma's address, letter title), but it consists of several files: the actual letter in MS Word document and a JPEG picture.

So, the idea was that I could create a content type derived from Folder and add some fields to this content type (address, title). All the files placed into that folder would naturally become parts of the 'document'.

Since we expect that there will be a lot of such documents, we create a folder hierarchy of regular type of folders, too.

Now, we come to the question: how do I show a view like "Recent documents" to my client? This must work recursively to enumerate all the "documents". Recursion through SPFolder objects is way too slow due to the number of requests that have to be made. We hoped for a recursive SPQuery, but this does not seem to be solvable this way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌化 2024-09-09 05:06:22

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

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

You should be able to get all the folders by filtering on the content type.

<Eq><FieldRef Name='ContentType' /><Value Type='Text'>Folder</Value></Eq>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文