Domanda

Ho una libreria di documenti con un campo metadati personalizzati gestito. Voglio ottenere i termini che vengono utilizzati per un elemento particolare. Posso accedere alla voce tramite il modello a oggetti, e può raggiungere il campo (che per allora il tipo è in realtà chiamato un TaxonomyField), ma io non riesco a ottenere l'accesso ai termini per il campo.

Per essere chiaro: io sono non cercando di ottenere tutti i termini possibili per il campo (che so come fare questo, e ci sono un sacco di blogposts). Sto cercando di arrivare a solo i termini che erano raccolta da parte dell'utente per un particolare elemento.

È stato utile?

Soluzione 2

Questo è come si fa

TaxonomyFieldValueCollection tfvc = (list.Items[0]["Field Name"] as TaxonomyFieldValueCollection);
var valuesList = (from v in tfvc select v.Label).ToList();

Altri suggerimenti

@Ashish Patel risposta non lavora quando ho provato ma ho potuto capire un po 'diverso. Ecco la mia versione del metodo di supporto sulla base di esempio fornito dal codice ninja blog, qui :

private List<Guid> GetTermsIds(SPListItem listItem, string fieldName)
{
    var taxonomyField = listItem.Fields.GetFieldByInternalName(fieldName) as TaxonomyField;
    if (taxonomyField.AllowMultipleValues)
    {
        var fieldValuesCollection = listItem[taxonomyField.Title] as TaxonomyFieldValueCollection;
        return fieldValuesCollection.Select(x => new Guid(x.TermGuid)).ToList();
    }
    else
    {
        var fieldValue = listItem[taxonomyField.Title] as TaxonomyFieldValue;
        return new List<Guid>() { new Guid(fieldValue.TermGuid) };
    }
}

La proprietà AllowMultipleValues ??si può accedere dal getto della colonna del campo come uno SPFieldLookup:

SPFieldLookup tagsField = (SPFieldLookup)listToQuery.Fields["your column name"];

Hai bisogno di leggere loro attraverso TaxonomyFieldValueCollection TaxonomyFieldValue classe a seconda del valore della AllowMultipleValues . Illustrato di seguito

if (tagsField.AllowMultipleValues)         
{             
    TaxonomyFieldValueCollection tagsValues = new TaxonomyFieldValueCollection(tagsField);             
}         
else         
{             
    TaxonomyFieldValue tagValue = new TaxonomyFieldValue(tagsField);             
}

Poi controlla le proprietà dell'etichetta e TermGuid di TaxonomyFieldValue.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top