2010-05-20 6 views
2

Возможно ли получить список всех папок в библиотеке документов SharePoint с помощью SPQuery?Перечислить все папки в списке SharePoint рекурсивно

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

dir /b /A:D /S 

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

Или я что-то не хватает?

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

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

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

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

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

+0

контратип http://stackoverflow.com/questions/1557675/caml-query-that-includes-folders-in-result-set К сожалению, не ясно в этой должности, если она была решена или не – Ryan

+0

Есть ли какая-то конкретная причина, по которой вы пытаетесь запросить все папки, а не итерации через SPList.Folders? Сейчас я выполняю некоторые тесты запросов, но мне это интересно. –

+0

@ccornet, да, я не хочу делать это итеративно. Обновлено мое сообщение, чтобы показать подробности. – naivists

ответ

1

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

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

Это работает для элементов в папке, в которой вы сейчас находитесь. У меня есть иерархия папок, в которой я должен выбрать только _some_ определенные папки (имеющие разные типы контента). Подробнее см. В моем сообщении. – naivists