Перечислить все папки в списке SharePoint рекурсивно - PullRequest
3 голосов
/ 20 мая 2010

Можно ли получить список всех папок в библиотеке документов SharePoint, используя SPQuery?

Что-то, что вы можете получить в файловой системе, если вы открыли командную строку Windows и запустили

 dir /b /A:D /S

Проблема в том, что если вы создаете простой SPQuery и устанавливаете viewAttributes равным Scope='RecursiveAll', результирующий набор содержит элементы, но не папки.

Или я что-то упустил?

Upd .: Причиной этого вопроса является (было) то, что я должен создать решение, в котором "пакет файлов" имеет смысл.
Когда мой клиент говорит о «документе», он фактически означает сущность, которая может состоять из нескольких файлов и общего набора метаданных для этих файлов.

Например, документ может называться «Письмо моей бабушке» (атрибуты: адрес бабушки, заголовок письма), но он состоит из нескольких файлов: собственно буква в документе MS Word и JPEG изображение.

Итак, идея заключалась в том, чтобы я мог создать тип контента, производный от папки, и добавить несколько полей к этому типу контента (адрес, заголовок). Все файлы, помещенные в эту папку, естественно станут частями «документа».

Поскольку мы ожидаем, что таких документов будет много, мы также создадим иерархию папок для папок обычного типа.

Теперь мы подошли к вопросу: как показать моему клиенту вид «Недавние документы»? Это должно работать рекурсивно, чтобы перечислить все «документы». Рекурсия по SPFolder объектам слишком медленная из-за количества запросов, которые нужно сделать. Мы надеялись на рекурсивный SPQuery, но это, похоже, не решаемо таким образом.

1 Ответ

1 голос
/ 20 мая 2010

Вы должны иметь возможность получить все папки, отфильтровав их по типу контента.

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