Il modo migliore per ottenere il riferimento al locale (raccolta siti) Termine Group Conservare
-
16-10-2019 - |
Domanda
Sto cercando di collegare alcune colonne del sito (TaxonomyFields) al set di termini nel negozio locale (SiteCollection) termine. In alcuni casi posso avere bisogno per creare effettivamente i set di termini e di questo codice sarà in esecuzione come un FeatureReceiver sulla caratteristica che è la dotazione del SiteColumns (in CAML). Quindi, sono in grado di fare questo:
var session = new TaxonomySession(site);
var termStore = session.DefaultSiteCollectionTermStore;
Ma ora come faccio ad ottenere il gruppo di tassonomia corretto (quello privato a mia raccolta siti) della collezione termStore.Groups? Devo davvero a poco ciclo attraverso di essa alla ricerca di "raccolta del sito - SCHostname-path-to-site" e la speranza che la traduzione funky URL funziona e che non ci sono i mapping di accesso dispari in gioco? Che sembra molto scrupoloso e devo credere che sto avvicinando questo torto. C'è un modo per scoprire "associazione di gruppo" del sito corrente in modo da poter chiamare termStore.GetGroup (id)?
Soluzione
There is a new method in the 2010 SP1 API: Microsoft.SharePoint.Taxonomy.TermStore.GetSiteCollectionGroup(SPSite currentSite)
you can use like this source code:
session = new TaxonomySession(site);
//Retrieve all Term stores from site collection
termstores = session.TermStores;
foreach (TermStore termstore in termstores)
{
foreach (TermSet termSet in termstore.GetSiteCollectionGroup(site).TermSets)
{
foreach (Term term in termSet.Terms)
{
row[0] = site.Url.ToString();
row[1] = site.RootWeb.ToString();
row[2] = termstore.Name.ToString();
row[3] = termstore.GetSiteCollectionGroup(site).Name.ToString();
row[4] = termSet.Name.ToString();
row[5] = term.Name.ToString();
dt.Rows.Add(row);
}
}
}