Pregunta

Tengo una biblioteca de documentos con un campo de metadatos administrado personalizado.Quiero obtener los términos que se utilizan para un artículo en particular.Puedo acceder al elemento a través del modelo de objetos y puedo acceder al campo (que para entonces el tipo en realidad se llama TaxonomyField), pero parece que no puedo acceder a los términos del campo.

Para ser claro:Soy no buscando obtener todos los términos posibles para el campo (sé cómo hacer esto y hay una TONELADA de publicaciones de blog).estoy tratando de llegar a SOLO los términos que fueron escogido por el usuario para un artículo en particular.

¿Fue útil?

Solución 2

Así es como lo haces

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

Otros consejos

@Ashish Patel Respuesta en realidad no funciona cuando lo intenté, pero pude resolverlo de manera un poco diferente. Aquí está mi versión del método Helper basado en el ejemplo proporcionado por Code Ninja Blog, aquí:

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

Se puede acceder a la propiedad AllowMultipleValues ​​convirtiendo la columna de campo como SPFieldLookup:

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

Necesitas leerlos detenidamente TaxonomíaFieldValueCollection o Valor de campo de taxonomía clase dependiendo del valor de AllowMultipleValues.Mostrado a continuación

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

Luego verifique las propiedades Label y TermGuid de TaxonomyFieldValue.

Licenciado bajo: CC-BY-SA con atribución
scroll top