CAML-запрос для поиска конкретного SPFolder, вложенного в дерево библиотеки документов - PullRequest
0 голосов
/ 06 октября 2008

Похоже, что поиск с использованием CAML и SPQuery не работает должным образом с пользовательскими метаданными, при поиске SPFolders вместо файлов или при поиске пользовательских типов содержимого. Я использовал U2U для тестирования различных запросов, и просто никуда не попал. Документы не очень полны по этой теме, и Google тоже не помогает.

В одном тесте я пытаюсь найти любые 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>

В обоих случаях я устанавливаю корень для поиска в библиотеке документов, которая содержит папки, которые содержат папки, которые содержат папки (фу.). Также я устанавливаю SPQuery для рекурсивного поиска.

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

РЕДАКТИРОВАТЬ Также было бы полезно знать, что я использую как SPList.GetItems с SPQuery в качестве аргумента, так и SPWeb.GetSiteData с SPSiteDataQuery в качестве аргумента. На данный момент кажется, что папки не включены в поисковый набор ни для одного из этих запросов.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 08 октября 2008

После дополнительных исследований я отвечаю на свой вопрос.

Очевидно, что методы, которые я использую для запроса, не возвращают SPFolders как элементы в наборе результатов. Возвращаются только элементы списка, в основном только документы.

Мое исправление состояло в том, чтобы выполнить запрос CAML для всех документов с определенным тегом / значением метаданных, а затем использовать родительскую папку первой в качестве типичной папки для набора. Работает достаточно хорошо для моих нужд.

1 голос
/ 07 октября 2008

Попробуйте добавить SharePoint Manager и Stramit CAML Viewer к вашему набору инструментов.

Я считаю, что оба очень важны для выяснения проблем с CAML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...