SharePoint - выполнение поиска пользователя по SOAP-вызову GetListItems - PullRequest
3 голосов
/ 06 января 2011

Я использую jQuery и сервис WAP 3.0 SOAP для извлечения и отображения данных из списка. Я хочу отфильтровать данные по столбцу CreatedBy. Вот мой CAML-запрос:

<Query>
<Where>
    <And>
        <Leq>
            <FieldRef Name="Created" />
            <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-8</Value>
        </Leq>
        <Geq>
            <FieldRef Name="Created" />
            <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-2</Value>
        </Geq>
        <Contains>
            <FieldRef Name="CreatedBy" LookupId="TRUE" />
            <Value Type="User">Smith</Value>
        </Contains>
    </And>
</Where>

Когда я выполняю это, SharePoint возвращает следующую ошибку:

0x80004005 - Невозможно выполнить это действие. Пожалуйста, попробуйте еще раз.

Удаление поиска пользователя разрешает эмитента. Куда я иду не так?

1 Ответ

4 голосов
/ 07 января 2011

Если вы хотите использовать их отображаемое имя, вы не можете использовать LookupId="TRUE" или Type="User".Это должно быть:

<Contains>
   <FieldRef Name="CreatedBy" />
   <Value Type="Text">Smith</Value>
</Contains>

См. мой ответ здесь для дополнительных примеров.

Редактировать:

Такжетолько что заметил, что ваш <And></And> узел содержит три подузла.Каждый может содержать только два, что означает, что вам нужно что-то вроде этого:

<Where>
  <And>
    <And>
      <Leq>
        <FieldRef Name="Created" />
        <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-8</Value>
      </Leq>
      <Geq>
        <FieldRef Name="Created" />
        <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-2</Value>
      </Geq>
    </And>
    <Contains>
      <FieldRef Name="CreatedBy" />
      <Value Type="Text">Smith</Value>
    </Contains>
  </And>
</Where>
...