Как я могу фильтровать на основе поля выбора при использовании listdata.svc в SharePoint 2010?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/14482

  •  16-10-2019
  •  | 
  •  

Вопрос

У меня есть список, который я пытаюсь запросить, используя listdata.svc. Я пытаюсь отказаться от записей в диапазоне дат и с определенным значением из проверенного поля выбора. Если я использую Lists.asmx, я могу построить CAML -запрос, чтобы отодвинуть необходимые мне записи, но я хочу использовать ListData.svc для этой солиции. Я могу отфильтровать на столбцах, значения которых хранятся в списке, и я использую «$ expand», чтобы отступить данные для моего поля выбора, но я не знаю, как структурировать URI Odata для фильтрации на основе выбора поле.

Я пробую такой запрос:

http://tssites/departments/appdev/_vti_bin/ListData.svc/TeamCalendar?$expand=Flags&$filter=Flags eq 'PTO'

Ошибка, которую я возвращаю, это:

Оператор 'EQ', несовместимый с типами операндов 'System.Collections.generic.Ienumerable`1 [[[Microsoft.SharePoint.linq.dataServiceEntity, Microsoft.SharePoint.linq, версия = 14.0.0.0, культура = нейтральная, publickeytoken = 71e9bce111e9429c]]' и 'System.string' в позиции 6.

Спасибо за вашу помощь.

Это было полезно?

Решение

Он не поддерживается для многосекционных полей (то есть поля, представленные в обычном пользовательском интерфейсе в качестве флажков). Следующая цитата на 2013 год, но те же правила применяются для ListData.svc. Однако вы можете фильтровать на стороне клиента, в зависимости от того, как вы представляете данные и используемые вами элементы управления.

Запросы для многозначных полей и пользователей

Поскольку поля многозначных поисков возвращаются как строка нескольких значений, для них нет способа запросить (например, эквивалент включения элемента или элемента Notincludes не поддерживается).

http://msdn.microsoft.com/en-us/library/fp142385(v=office.15).aspx

Другие советы

Поля выбора возвращаются со значением без необходимости расширения:

Пример: IP_WorkflowStatus = IP_WorkflowStatusValue

Вот пример запроса без использования расширения:

$filter=IP_WorkflowStatusValue eq '2-Validated'

Если вы хотите использовать расширение, вам необходимо использовать расширенное соотношение обозначения поля/поля:

$filter=IP_WorkflowStatus/Value eq '2-Validated'&$expand=IP_WorkflowStatus

Получите значение поля выбора в API REST, подключив «значение» к имени поля. Например, если имя вашего поля является флагами, используйте термин FlagSValue в строке фильтра. Это работает, если поле выбора не является полевым полем.

Ваш URL должен быть похож на

http: //tssites/departments/appdev/_vti_bin/listdata.svc/teamcalendar? $ expand = flags & $ filter = flagsValue EQ 'PTO'

Есть еще одна работа по этому вопросу. Создайте рассчитанный столбец и добавьте поле выбора в качестве формулы для него. Теперь используйте рассчитанный столбец для фильтрации.

Для множества поля выбора:

Следуйте по следующим шагам.

  1. Добавить новый текстовый столбец по имени flagscsv
  2. Измените редактирование элемента списка и добавьте в него веб -часть контента. Подключите HTML -страницу к веб -части контента. (Пусть имя HTML -страницы будет Content.html и загрузите это в библиотеки, такие как SiteAsests)
  3. Отредактируйте Content.html и используйте jQuery, чтобы добавить события изменения в параметры флагов. Сгенерируйте разделенные запятые значения выбранных параметров множества элементов и установите его на текстовую поле FlagSCS.
  4. Сохраните и закройте HTML -страницу. Теперь каждый раз, когда вы редактируете элемент списка, FLAGSCSV также будет обновляться.
  5. Вы можете использовать поле FladSCSV для фильтрации позже в вызове отдыха.

Просто .. Если вы хотите отфильтровать поле выбора с именем «Цвет», просто дайте так:

$ filter = colorValue EQ 'Blue' & $ Expand = Color

Просто добавьте значение с именем столбца. здесь ColorValue

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top