Правильно вложенные составные и / или операторы с использованием CAML - PullRequest
0 голосов
/ 14 мая 2019

Я использую SPservices в среде SharePoint 2013 для создания отфильтрованных представлений, уникальных для текущего пользователя. Фактически, когда пользователь посещает страницу, он получает пользовательский поток документов, которые он загрузил в определенную библиотеку.

Я могу успешно запросить библиотеку и отобразить результаты так, как я хочу, но когда я пытаюсь создать составной CAML-запрос, я продолжаю получать ошибки. Я попытался использовать различные ресурсы здесь, чтобы вручную построить этот запрос (и из-за сетевых ограничений, я не могу использовать инструмент сборки U2U CAML), но я продолжаю получать ошибочные сообщения. Я начал делать простые запросы, и это работало, но как только я пытаюсь добраться до своего третьего и четвертого операторов «ИЛИ» (включая аргумент IsNull), я попал в стену. Я думаю, что я неправильно вкладываю свои утверждения и хотел бы помочь мне определить, что я делаю неправильно.

    <Where>
      <And>
        <Contains>
           <FieldRef Name='Author' />
           <Value Type='User'>" + userName + "</Value>
        </Contains>

      <And>
        <Eq>
          <FieldRef Name='ContentType' />
          <Value Type='Computed'>Document</Value>
        </Eq>
      </And>
      <Or>
        <Or>
          <Or>
            <Or>
              <Eq>
                <FieldRef Name='sensitivity' />
                <Value Type='Choice'>Low</Value>
              </Eq>
              <Eq>
                <FieldRef Name='sensitivity' />
                <Value Type='Choice'>Medium</Value>
              </Eq>
            </Or>
              <Eq>
                <FieldRef Name='sensitivity' />
                <Value Type='Choice'>High</Value>
              </Eq>
          </Or>
         </Or>
        <IsNull>
           <FieldRef Name='sensitivity' />
        </IsNull>
       </Or>
     </And>
    </Where>

Желаемым результатом будет вывод элементов, которые текущий пользователь загрузил / создал. ГДЕ тип контента равен «Документ», а поле «Чувствительность» (выбор) равно «Низкий», «Средний», «Высокий» или пусто.

Я чувствую, что я действительно близко, но я делаю глупую ошибку. Для контекста, ссылка «userName» в операторе - это переменная javascript, которая работает правильно.

1 Ответ

0 голосов
/ 22 мая 2019

Брекетинг может привести к путанице без такого инструмента, как инструмент U2U CAML. Я чувствую твою боль.

Я думаю, что ваша проблема может быть в конце. Я полагаю, что вы хотели бы это NotNull

  <IsNotNull>  
    <FieldRef Name='sensitivity' />   
  </IsNotNull>  

Как последний канал, вы можете просто запросить все файлы по пользователю, чьи документы со

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