Запрос поля выбора в Sharepoint с помощью отдыха
Я получил список в Sharepoint 2010 с столбцом выбора. Возможны флажки.
Как выполнить запрос столбца выбора с помощью остальных api?
Я пробовал использовать
http://sp2010/_vti_bin/listdata.svc/mylist?$filter=myChoicesColumn/xxx eq something
а затем я получаю
Нет свойства 'xxx' существует в типе "System.Collections.Generic.IEnumerable`1 [[Microsoft.SharePoint.Linq.DataServiceEntity, Microsoft.SharePoint.Linq, Версия = 14.0.0.0, Культура = нейтральная, PublicKeyToken = 71e9bce111e9429c]] 'at позиция 6.
Какое свойство следует использовать?
Ответы
Ответ 1
Ни один из этих ответов не будет работать для полей SP, которые имеют тип multiselect (т.е. поля, представленные как флажки).
Если вы попробуете следующий фильтр в поле выбора многозадачности, называемом "Группировка", как это:
$filter=Grouping/Value eq 'My Value'
Вы получите сообщение об ошибке:
{
"error": {
"code": "",
"message": {
"lang": "en-US",
"value": "No property 'Value' exists in type 'System.Collections.Generic.IEnumerable`1[[Microsoft.SharePoint.Linq.DataServiceEntity, Microsoft.SharePoint.Linq, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c]]' at position 9."
}
}
}
}
Может быть, Value
не требуется? Вы по-прежнему получаете сообщение об ошибке. В SP 2013 документация MSDN заявляет, что запрос на выбор из нескольких вариантов невозможен. Поэтому я могу только предположить, что то же самое верно для API REST 2010 года, который практически не документирован.
Запросы для многозначных поисковых полей и пользователей. Поскольку поля многозначного поиска возвращаются как строка из нескольких значений, нет способа запросить их (например, эквивалент Включает элемент или элемент NotIncludes не поддерживается).
http://msdn.microsoft.com/en-us/library/fp142385(v=office.15).aspx
Ответ 2
Вам нужны одинарные кавычки вокруг значения в фильтре.
$filter=myChoicesColumn eq 'something'
Ответ 3
Я пробовал это успешно на O365, но то же самое должно работать и в OnPrem.
~SITE_URL/_api/web/lists/getbytitle('LISTNAME')/items?$filter=(FieldInternalName eq 'CHOICE1') or (FieldInternalName eq 'CHOICE2')
Используйте "и" вместо "или" в соответствии с вашими потребностями.
Ответ 4
Не уверен, что вы уже решили это. Однако:
Предположим, у вас есть список продуктов с полем поиска в стране.
И вы хотите отфильтровать результат на Продуктах из Франции, и вы не хотите фильтровать по идентификатору страны, тогда вы можете фильтровать свойство $expand следующим образом:
http://sharepoint/_vti_bin/ListData.svc/Product?$expand=Country&$filter=Country/Title eq 'France'
Я расширил вызов REST со списком Country, а затем установил фильтр в Country/Title в 'France'
Ответ 5
Я только что получил эту работу для своих требований со следующим.
http://sp2010/_vti_bin/listdata.svc/mylist?$filter=myChoicesColumn/Value%20eq'something'
Ответ 6
Просто снимок:
Вы пробовали
http://sp2010/_vti_bin/listdata.svc/mylist?$filter=myChoicesColumn contains something
Ответ 7
Для тех, кто все еще борется с этим в SharePoint 2010 (который использует конечную точку /_vti_bin/listdata.svc
, а не SharePoint 2013 и выше /_api/web
), я смог успешно фильтровать на одном, используя ChoiceFieldNameValue
в параметре $filter
вместо ChoiceFieldName/Value
.
Обратите внимание на отсутствие косой черты между именем поля и словом Value
. Необычно, параметр $select
по-прежнему требует /Value
, как ожидалось.
Мой успешный URL-адрес конечной точки выглядел следующим образом:
_vti_bin/listdata.svc/ListName?$filter=(ChoiceFieldNameValue eq 'targettext')&$select=ChoiceFieldName/Value&$expand=ChoiceFieldName
Замените ListName
именем вашего списка и ChoiceFieldName
отображаемым именем вашего поля, в каждом случае с удалением пробелов и, возможно, с числовым суффиксом, чтобы избежать коллизий именования, и замените 'targettext'
на значение против которого вы хотите отфильтровать.