La fonction que vous recherchez est Term.GetTerms
Vous aurez besoin d'obtenir un TaxonomyValue de votre champ
Ensuite, vous devez obtenir la session Taxonomy en cours, puis utiliser la session Taxonomy pour obtenir le terme utilisé dans le champ. À partir de ce terme, vous pouvez utiliser le champ Parent pour obtenir le terme parent. Voici un code approximatif pour vous montrer les objets utilisés.
TaxonomyFieldValue v = null; // Notsurehowtodothisbit();
TaxonomySession session = new TaxonomySession(site);
if (session.TermStores != null && session.TermStores.Count > 0)
{
TermStore termStore = session.TermStores[0];
Term t = termStore.GetTerm(v.TermGuid);
Term parentTerm = t.Parent;
TermCollection childTerms = t.GetTerms();
}
Une fois que vous avez l'arbre, vous pourrez peut-être utiliser une requête CAML pour générer une requête SPList.GetList qui ramène tout marqué de cette façon.
Je ne l'ai pas fait une expérience à cet égard ... Mais Bart-Jan Hoeijmakers a
private SPListItemCollection GetItemsByTerm(Term term, SPList list)
{
// init some vars SPListItemCollection items = null;
SPSite site = SPContext.Current.Site; // set up the TaxonomySession
TaxonomySession session = new TaxonomySession(site);
// get the default termstore TermStore termStore = session.TermStores[0];
// If no wssid is found, the term is not used yet in the sitecollection, so no items exist using the term
int[] wssIds = TaxonomyField.GetWssIdsOfTerm(SPContext.Current.Site, termStore.Id, term.TermSet.Id, term.Id, false, 1);
if (wssIds.Length > 0)
{
// a TaxonomyField is a lookupfield. Constructing the SPQuery
SPQuery query = new SPQuery();
query.Query = String.Format("<Where><Eq><FieldRef Name='MyTaxonomyField' LookupId='TRUE' /><Value Type='Lookup'>{0}</Value></Eq></Where>", wssIds[0]);
items = list.GetItems(query);
}
return items;
}
getTerms est la clé de la réponse. CAML est idéal pour une liste ou une partie Web de requête de contenu.Voir ma réponse mise à jour pour savoir comment obtenir votre guide de termes initial et une méthode pour utiliser la recherche dans toutes les listes et bibliothèques. –