Запрос CAML с проблемой Contains и Or Clause

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

Я создал простой запрос CAML для запроса моего списка с одним ключевым словом (pdf).

<Query><Where><Contains><FieldRef Name='Keyword'/><Value Type='Text'>pdf</Value></Contains></Where></Query>

Это прекрасно работает.

Но когда я пытаюсь использовать предложение Or в запросе CAML (см. Ниже), я получаю следующую ошибку

«Один или несколько типов полей не установлены должным образом. Перейдите на страницу настроек списка, чтобы удалить эти поля».

<Query><Where><Or><Contains><FieldRef Name='Keyword'/><Value Type='Text'>pdf</Value></Contains></Or></Where></Query>

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

Заранее спасибо.


person c_y    schedule 05.07.2012    source источник
comment
Если вы используете SharePoint 2007, возможно, он будет выпущен даже в 2010 году), я рекомендую вам попробовать использовать конструктор CAML, который облегчит вашу жизнь!   -  person Truezplaya    schedule 05.07.2012
comment
Truezplaya, к сожалению .. в моей компании есть ограничения на скачивание softwr. Я использую службу списков в sharepoint только из своего Javascript, и в будущем она мне не понадобится. Есть ли онлайн-инструмент для оценки синтаксиса?   -  person c_y    schedule 05.07.2012
comment
К сожалению, я не думаю, что это так. Этот инструмент повысит эффективность при написании CAML, поэтому я подумал, что у вас будет хороший случай получить копию. Если вы напишете CAML один раз, я уверен, что вы снова столкнетесь с этим!   -  person Truezplaya    schedule 06.07.2012


Ответы (2)


В запросе CAML, если вы хотите использовать ИЛИ, вы должны и должны иметь 2 условия.

person bhargava    schedule 05.07.2012
comment
Количество ключевых слов может быть от 1 до n. Я создаю предложение Where динамически. Итак, насколько я понимаю, мне нужно исключить предложение OR, если есть одно ключевое слово, и включить его, если их больше одного? - person c_y; 05.07.2012

Имя ссылки на поле должно быть внутренним именем. Вы можете найти это, перейдя на страницу colmn в настройках списка / библиотеки, имя которой является концом URL-адреса. Пробелы и подчеркивания в имени нужно обрабатывать по-другому.

person zen00    schedule 21.07.2012