Проверка запроса CAML для параметров NULL

Я пролистал различные статьи, но не нашел ответа на свой точный сценарий. У меня есть список SharePoint 2010 с некоторыми параметрами запроса для фильтрации. Мой запрос CAML хорошо работает для фильтрации, за исключением одного обстоятельства, я бы хотел, чтобы в моем запросе были общие критерии отображения всех, когда впервые выполняется просмотр списка (т.е. мой клиент будет активно видеть / просматривать / сортировать данные, не имея предварительно для поиска по списку). Если бы я просто фильтровал поля списка, я бы установил их, но поскольку я ссылаюсь на параметры запроса в своем CAML, я получаю ошибки SOAP в SharePoint Designer. Эквивалент SQL будет: Где (@ Parameter1 имеет значение NULL, а @ Parameter2 равно NULL, а @ Parameter3 равно NULL ...)

Я пробовал эту структуру:

    <Or Group="true">
       <And>
         <And>
           <IsNull>
           <FieldRef Name ="Title"/>
           <Value Type="Text">{RollNum}</Value>
           </IsNull>
        <Gt>
          <FieldRef Name="ID"/>                     
          <Value Type="Counter">
         <IfEqual>
          <Expr1><![CDATA[{Param1}]]></Expr1>   
          <Expr2/>
          <Then>0</Then>                    
          <Else>2147483647</Else>
        </IfEqual>
        </Value>
      </Gt>
    </And>
   <IsNull>
      <FieldRef Name ="RefNumber"/>
      <Value Type="Text">{RefNum}</Value>
      </IsNull>
    </And>
</Or>...the rest of the query, which works fine.

У меня такое чувство, что моя структура неверна.

Заранее спасибо, Брайан Х.


person Brian    schedule 31.05.2016    source источник


Ответы (2)


Вы можете использовать этот синтаксис, чтобы определить, является ли поле нулевым:

<Where><IsNull><FieldRef Name='YourFieldName' /></IsNull></Where>

У вас есть дополнительный Value элемент в IsNull, который вы должны удалить.

person Glenn Ferrie    schedule 31.05.2016
comment
Привет, Гленн, Единственная проблема в том, что я не проверяю, является ли поле списка нулевым, я пытаюсь проверить, является ли текстовое поле, в которое вводится параметр запроса, нулевым. По сути, я хочу, чтобы список отображал все, если все поля в моем предоставленном поисковом запросе равны нулю, в противном случае пользователь может ввести значение в любое из моих полей параметров, чтобы отфильтровать список ad-hoc - person Brian; 31.05.2016

Я решил использовать веб-часть HTML-формы для достижения своей цели (вместо редактора содержимого). Веб-часть HTML-формы сохраняет все значения фильтров, введенные в любые поля, и может быть подключена для фильтрации моего списка с использованием параметров и настраиваемого запроса caml.

person Brian    schedule 20.07.2016