Domanda

Ciao e grazie per aver guardato!

Sfondo

Ho ereditato un vecchio progetto .NET basato su SharePoint 2007 e ho progettato ed esterno libreria core che accetta semplicemente i dati SP, rendendo quindi SP solo un backend. Sì, so che sarebbe meglio migrare su SQL, ma il cliente non è d'accordo.

Gli sviluppatori precedenti hanno utilizzato un semplice metodo di lettura per leggere i dati in un elenco SP:

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

E poi accedono alle proprietà dell'elenco tramite una sorta di dizionario (cioè per ogni elemento nell'elenco, ottieni l'articolo ["At'Value"]).

Non sono abile in SharePoint, quindi non so se questo è il modo più efficiente per accedere ai suoi dati.

Problema

Come faccio a leggere campi di ricerca con più valori in SharePoint?

Ogni proprietà che richiedono sembra desiderare una stringa in cambio. Così item[SomeString] Va bene, ma item[SomeList] Fa tutto il barf! Avrei pensato che una colonna di ricerca multi-valore si presenta come una stringa serializzata o delimitata con i valori selezionati (esempio: "rosso; blu; verde"). Cosa mi manca?

Grazie!

È stato utile?

Soluzione

Per ciascuno dei SPFieldS nei campi dell'elenco, devi testare il campo Type.

Se il tipo è SPFieldType.MultiChoice, Quindi hai lanciato il SPField a SPFieldChoice e accedere al Choices collezione, che è un StringCollection.

Altri suggerimenti

Se sei specificamente interessato ai campi di ricerca con più valori non solo MultiChoice Feilds, il seguente codice dovrebbe aiutare:

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>();


 }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top