示例#1
0
        public static TaxonomyFieldValueCollection GetTaxonomyFieldValues(TermSet termSet, IEnumerable <string> values, bool addIfDoesNotExist, out bool newTermsAdded)
        {
            TaxonomyFieldValueCollection termValues = TaxonomyFieldControl.GetTaxonomyCollection("");

            newTermsAdded = false;

            if (values != null && values.Count() > 0)
            {
                bool[] newTermAddedResult = new bool[values.Count()];
                termValues.AddRange(values.Where(termValue => termValue != null)
                                    .Select((value, i) =>
                {
                    bool newTermAdded;
                    TaxonomyFieldValue val = GetTaxonomyFieldValue(termSet,
                                                                   value,
                                                                   addIfDoesNotExist,
                                                                   out newTermAdded);
                    newTermAddedResult[i] = newTermAdded;
                    return(val);
                }));
                newTermsAdded = newTermAddedResult.Any(newTermAdded => newTermAdded);
            }

            return(termValues);
        }
示例#2
0
        public static TaxonomyFieldValue GetTaxonomyFieldValue(SPSite site, TaxonomyField field, string value, out List <int> wssIds)
        {
            TaxonomySession taxonomySession = new TaxonomySession(site);
            TermStore       termStore       = taxonomySession.TermStores[field.SspId];
            TermSet         termSet         = termStore.GetTermSet(field.TermSetId);

            wssIds = new List <int>();
            TaxonomyFieldValue taxonomyFieldValue = TaxonomyFieldControl.GetTaxonomyValue(value);

            wssIds.AddRange(TaxonomyField.GetWssIdsOfTerm(site, termStore.Id, termSet.Id,
                                                          new Guid(taxonomyFieldValue.TermGuid), true, 100));

            return(taxonomyFieldValue);
        }
示例#3
0
        public static TaxonomyFieldValue GetTaxonomyFieldValue(TermSet termSet, string value, bool addIfDoesNotExist, out bool newTermAdded)
        {
            string termVal = TaxonomyItem.NormalizeName((value ?? string.Empty).Trim()); //ReplaceIllegalCharacters((value ?? string.Empty).Trim());
            Term   term    = null;

            newTermAdded = false;

            if (termSet != null)
            {
                if (!string.IsNullOrEmpty(termVal))
                {
                    term = termSet.GetTerms(termVal, termSet.TermStore.DefaultLanguage, true,
                                            StringMatchOption.ExactMatch, 1, false).FirstOrDefault();
                }

                if (term == null && termSet.IsOpenForTermCreation && addIfDoesNotExist)
                {
                    if (!string.IsNullOrEmpty(termVal))
                    {
                        term         = termSet.CreateTerm(termVal, termSet.TermStore.DefaultLanguage);
                        newTermAdded = true;
                        //termSet.TermStore.CommitAll();
                    }
                }

                if (term != null)
                {
                    string termValue = string.Concat(term.GetDefaultLabel(termSet.TermStore.DefaultLanguage),
                                                     TaxonomyField.TaxonomyGuidLabelDelimiter,
                                                     term.Id.ToString());
                    return(TaxonomyFieldControl.GetTaxonomyValue(termValue));
                }
            }

            return(null);
        }
示例#4
0
        public static TaxonomyFieldValueCollection GetTaxonomyFieldValues(SPSite site, TaxonomyField field, string values, out List <int> wssIds)
        {
            if (values == null)
            {
                throw new ArgumentNullException("values");
            }

            TaxonomySession taxonomySession = new TaxonomySession(site);
            TermStore       termStore       = taxonomySession.TermStores[field.SspId];
            TermSet         termSet         = termStore.GetTermSet(field.TermSetId);

            TaxonomyFieldValueCollection termValues = new TaxonomyFieldValueCollection(field);

            termValues.AddRange(TaxonomyFieldControl.GetTaxonomyCollection(values));

            wssIds = new List <int>();
            foreach (TaxonomyFieldValue termValue in termValues)
            {
                wssIds.AddRange(TaxonomyField.GetWssIdsOfTerm(site, termStore.Id, termSet.Id,
                                                              new Guid(termValue.TermGuid), false, 500));
            }

            return(termValues);
        }