2011-03-21 19 views
14

Obtuve una lista en Sharepoint 2010 con una columna de opción. Las opciones son casillas de verificación.Campo de elección de consulta en Sharepoint usando rest

¿Cómo consulto la columna de opciones usando la api restante?

He intentado usar

http://sp2010/_vti_bin/listdata.svc/mylist?$filter=myChoicesColumn/xxx eq something 

y entonces consigo

No property 'xxx' 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 6.

¿Qué propiedad se debe usar?

+1

¿cuál es la respuesta final? ¡Estoy atrapado con el mismo problema! – Shreyas

+0

Cuando obtuve las respuestas, terminé el proyecto en el que estaba. Lo siento, no puedo decir cuál es la solución correcta. – Ivar

+0

'myChoicesColumn/Value' works – WhiteHat

Respuesta

0

Sólo un tiro:

¿Usted intentó

http://sp2010/_vti_bin/listdata.svc/mylist?$filter=myChoicesColumn contains something 
2

Usted necesita comillas simples alrededor del valor en el filtro.

$filter=myChoicesColumn eq 'something' 
1

No estoy seguro de que ya haya resuelto esto. Sin embargo:

Supongamos que tiene una lista de productos con un campo de búsqueda para un país. Y desea filtrar el resultado de los productos procedentes de Francia y no desea filtrar por ID de país, entonces se puede filtrar en los $ ampliar propiedad como esta:

http://sharepoint/_vti_bin/ListData.svc/Product?$expand=Country&$filter=Country/Title eq 'France' 

he ampliado la llamada REST con la lista País y luego configure el filtro País/Título en 'Francia'

6

Ninguna de estas respuestas funcionará para los campos SP que son de tipo multiselección (es decir, campos representados como casillas de verificación).

Si intenta el siguiente filtro en un campo de opción de selección múltiple denominada "Agrupación" así:

$filter=Grouping/Value eq 'My Value'

obtendrá el error:

{ 
    "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." 
     } 
    } 
} 
} 

Tal Value no se requiere ? Aún obtienes un error. En SP 2013, la documentación de MSDN indica que consultar una opción de selección múltiple no es posible. Así que solo puedo suponer que lo mismo es cierto para la API REST 2010, que apenas está documentada.

Queries for multi-value lookup fields and users Because multi-value lookup fields are returned as a string of multiple values, there is no way to query for them (for example, the equivalent of an Includes element or NotIncludes element is not supported).

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

+5

Bien hecho Microsoft. Implemente una nueva API que sea peor que su predecesora y no moleste en documentar las deficiencias. – Fergal

1

yo acabamos de este trabajo para mis necesidades con lo siguiente.

http://sp2010/_vti_bin/listdata.svc/mylist?$filter=myChoicesColumn/Value%20eq'something' 
2

He intentado esto con éxito en O365 pero lo mismo debería funcionar en OnPrem también.

~SITE_URL/_api/web/lists/getbytitle('LISTNAME')/items?$filter=(FieldInternalName eq 'CHOICE1') or (FieldInternalName eq 'CHOICE2') 

Utilice "y" en lugar de "o" según sus necesidades.

+0

Puedo confirmar que este enfoque también funciona con En-locales 2013. La nueva API REST se comporta de forma diferente a la OData ListData.svc de la era 2010. – Goyuix

0

Para cualquier persona que sigue luchando con esto en SharePoint 2010 (que utiliza el /_vti_bin/listdata.svc punto final y no SharePoint 2013 y por encima de la /_api/web), que fue éxito capaz de filtrar en un solo campo -selección elección usando ChoiceFieldNameValue en el $filter parámetro en lugar de ChoiceFieldName/Value.

Tenga en cuenta la falta de una barra inclinada entre el nombre del campo y la palabra Value. Curiosamente, el parámetro $select aún requiere el /Value como se esperaba.

Mi URL de punto final con éxito era la siguiente:

_vti_bin/listdata.svc/ListName?$filter=(ChoiceFieldNameValue eq 'targettext')&$select=ChoiceFieldName/Value&$expand=ChoiceFieldName 

Reemplazar ListName con el nombre de su lista y ChoiceFieldName con el nombre de visualización del campo, en cada caso con espacios retirados y, posiblemente, con un sufijo numérico para evite nombrar colisiones y reemplace 'targettext' con el valor contra el cual desea filtrar.

Cuestiones relacionadas