CAML Query возвращает все задачи текущего пользователя
Я пытаюсь выполнить запрос ко всем Задачам во всем семействе сайтов, используя следующую фразу where в моем CAML-Запросе. Из того, что я могу сказать, этот код точно такой, как указано в этой предположительно надежной записи в блоге. Кто-нибудь знает, почему это не будет работать? Спасибо за прочтение
Мой код даже не выполняется, так как он жалуется на мой CAML-запрос
"<Where>" +
"<And>" +
"<BeginsWith>" +
"<FieldRef Name=\"ContentTypeId\" />" +
"<Value Type=\"ContentTypeId\">0x0108009D937E40833C472CBC11D246C635B662</Value>" +
"</BeginsWith>" +
"<Eq>" +
"<FieldRef Name=\"TaskStatus\" />" +
"<Value Type=\"Text\">Completed</Value>" +
"</Eq>" +
"<Eq>" +
"<FieldRef Name=\"AssignedTo\" />" +
"<Value Type=\"Lookup\">" + id + "</Value>" +
"</Eq>" +
"</And>" +
"</Where>" +
"<OrderBy>" +
"<FieldRef Name=\"Title\"/>" +
"</OrderBy>";
2 ответа
Я согласен с приведенным выше ответом. Поскольку здесь имеется несколько элементов And, а любой элемент And поддерживает только 2 конъюнкта, вложенные элементы And должны использоваться для объединения нескольких условий. Если вы используете список задач по умолчанию в SharePoint, попробуйте следующий запрос CAML:
<Query>
<Where>
<And>
<BeginsWith>
<FieldRef Name="ContentTypeId" />
<Value Type="Counter">0x0108009D937E40833C472CBC11D246C635B662</Value>
</BeginsWith>
<And>
<Eq>
<FieldRef Name="TaskStatus" />
<Value Type="Choice">Completed</Value>
</Eq>
<Eq>
<FieldRef Name="AssignedTo" />
<Value Type="UserMulti">id</Value>
</Eq>
</And>
</And>
</Where>
<OrderBy>
<FieldRef Name="Title" Ascending="False" />
</OrderBy>
</Query>
У вас есть несколько условий в And
элемент. And
elements поддерживает только два условия, как описано здесь. Перепишите запрос, используя несколько вложенных And
элементы, содержащие только два условия или другие And
элементы.