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)?

È stato utile?

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);
                                }
                            }                                                                
                        }   
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top