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 элементы.

Другие вопросы по тегам