Запрос поля выбора в 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' на значение против которого вы хотите отфильтровать.