Pregunta

¡Hola y gracias por mirar!

Fondo

He heredado un antiguo proyecto .NET basado en SharePoint 2007 y he diseñado y biblioteca de núcleo externo que simplemente accede a los datos SP, lo que hace que SP solo sea un backend. Sí, sé que sería mejor migrar a SQL, pero el cliente no está de acuerdo.

Los desarrolladores anteriores utilizaron un método de lectura simple para leer los datos en una lista de SP:

  SPList list = CurrentRootWeb.Lists["SomeListName"];

Y luego acceden a las propiedades de la lista a través de una especie de diccionario (es decir, para cada elemento de la lista, obtenga el elemento ["SomeValue"]).

No soy experto en SharePoint, por lo que no sé si esta es la forma más eficiente para acceder a sus datos.

Problema

¿Cómo leo los campos de búsqueda con múltiples valores en SharePoint?

Cada propiedad que solicitan parece querer una cadena a cambio. Asi que item[SomeString] está bien, pero item[SomeList] ¡Hace que todo Barf! Hubiera pensado que una columna de la lista de búsqueda de valores múltiples llega como una cadena serializada o delimitada que contiene los valores seleccionados (ejemplo: "rojo; azul; verde"). ¿Qué me estoy perdiendo?

¡Gracias!

¿Fue útil?

Solución

Para cada uno de los SPFields En los campos de la lista, debe probar el campo Type.

Si el tipo es SPFieldType.MultiChoice, entonces arrojas el SPField a SPFieldChoice y acceder al Choices colección, que es una StringCollection.

Otros consejos

Si está específicamente interesado en los campos de búsqueda con múltiples valores, no solo los Feild de MultiChoice, entonces el siguiente código debería ayudar:

item.Fields["LookFieldName"].Type == SPFieldType.Lookup;
SPFieldLookup LookUpField = item.Fields["LookFieldName"] as SPFieldLookup;
if (LookUpField.AllowMultipleValues)
{
    SPFieldLookupValueCollection valueCollection = item[Field.Id] as SPFieldLookupValueCollection;

    string[] arrLookupValues = (from SPFieldLookupValue val in valueCollection select val.LookupValue).ToArray<string>();


 }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top