Mediante el servicio de metadatos podremos asociar a nuestro contenido metadatos con una estructura con sentido para nuestra organización. Además de la poder manejarlos desde la interfaz gráfica, dispondremos de un modelo de objetos para realizar el mantenimiento, consultas y visualizarlo mediante controles.
Modelo de objetos
SharePoint nos proporciona una serie de clases para manejar y navegar por la estructura de metadatos. Para obtener una referencia al conjunto de almacenes de términos definidos para una Colección de Sitios utilizaremos la clase TaxonomySession. Mediante la propiedad TermStores podremos obtener los distintos almacenes de términos del tipo TermStore que representa un almacén de grupos de términos.
Para obtener los grupos de términos utilizaremos la propiedad Groups de la clase TermStore que nos devolverá una colección de elementos del tipo Group.
Para obtener los conjuntos de términos de un grupo utilizaremos la propiedad TermSets.
Para ilustrar un ejemplo:
SPSite site = SPContext.Current.Site;
TaxonomySession session = new TaxonomySession(site);
TermStore termStore = session.TermStores["Servicio de metadatos administrados"]; // Almacén de términos
Group group = termStore.Groups["MiGrupo"]; // Grupo de términos
TermSet productsTermSet = group.TermSets["MiConjunto"]; // Conjunto de términosTerm termino = productsTermSet.Terms[“MiTérmino”]; // Término o palabra
Para manejar una columna de tipo “Metadatos administrados” disponemos de la clase TaxonomyField, con el método GetFieldValue() obtendremos una referencia del tipo TaxonomyFieldValue para manejar los valores almacenados en la columna.
De la clase TaxonomyFieldValue podemos obtener el identificador del término almacenado con la propiedad TermGuid y con la propiedad Label el texto del término.
SPList listaConMetadato = SPContext.Current.Site.RootWeb.Lists["NombreLista"];
SPListItem itemConMetdato = listaConMetadato.Items[0];
TaxonomyFieldValue valordeMetadato = new TaxonomyFieldValue((string)itemConMetdato["NombreColumna"]);
string idTermino = valordeMetadato.TermGuid;
string textoTermino = valordeMetadato.Label;
Controles
En la parte visual dispondremos de varios controles como:
- TaxonomyFieldControl
- TaxonomyWebTaggingControl
Ambos controles los encontraremos en la dll Microsoft.SharePoint.Taxonomy.dll en el namespace Microsoft.SharePoint.Taxonomy. Para registrar estos controles en una página o control utilizaremos:
<%@ Register Tagprefix="Taxonomy" Namespace="Microsoft.SharePoint.Taxonomy" Assembly="Microsoft.SharePoint.Taxonomy, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
El control TaxonomyFieldControl lo utilizaremos para poder asociar un elemento de una lista o biblioteca a un metadato, es el control que utilizará SharePoint al visualizar una columna de tipo “Metadatos administrados”. Por ejemplo las páginas wiki disponen de la opción de catalogar las páginas mediante una columna de tipo “Metadatos administrados” y en el layouts:
<Taxonomy:TaxonomyFieldControl FieldName="Wiki_x0020_Page_x0020_Categories" EmptyValueDescriptionForTargetTemplate="<%$Resources:cms,enterwiki_nocategories_assigned%>" DisableInputFieldLabel="true" runat="server" />
El control TaxonomyWebTaggingControl lo utilizaremos para navegar por la estructura de metadatos. Para utilizarlo tendremos que indicarle que subconjunto del árbol de metadatos utilizará, por ejemplo:
taggingTaxonomy.SspId.Add(termStore.Id);
taggingTaxonomy.TermSetId.Add(productsTermSet.Id);
taggingTaxonomy.AllowFillIn = true; // Permite autocompletar
taggingTaxonomy.IsMulti = false; // Indica si permite multiselección
Para leer el metadato seleccionado, disponemos de la propiedad “Text” que devuelve los términos seleccionados con el formato “Término|GUID”. En este caso no podremos utilizar una clase del tipo TaxonomyFieldValue para extraer los valores por separado ya que el formato que devuelve la propiedad TaxonomyWebTaggingControl.Text no es compatible.
No hay comentarios:
Publicar un comentario