Come faccio a leggere campi di ricerca con più valori in SharePoint?
-
28-10-2019 - |
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!
Soluzione
Per ciascuno dei SPField
S 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>();
}