zoukankan      html  css  js  c++  java
  • 关键字类型托管元数据保存 TaxonomyField 字段类型

            internal const int MAX_LENGTH = 255;
            internal static readonly Regex NameRegex = new Regex("[;<>|\t]", RegexOptions.Compiled | RegexOptions.IgnoreCase);
            internal static readonly Regex SpaceRegex = new Regex("[ ]{2,}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
            private string GetValidTermName(string name)
            {
                if (NameRegex.IsMatch(name))
                {
                    name = NameRegex.Replace(name, " ");
    
                }
                name = SpaceRegex.Replace(name, " ");
                name = name.Length > MAX_LENGTH ? name.Substring(0, MAX_LENGTH) : name;
                name = name.Replace(Convert.ToChar(38), Convert.ToChar(65286));
                return name.Trim();
            }
            private void WriteTagsToFolksonomyColumn(IEnumerable<string> tags, SPListItem item, TaxonomyField column)
            {
                if (!column.IsTermSetValid) return;
                if (!column.Open) return;
                var session = new TaxonomySession(item.Web.Site);
                var mms = session.TermStores[column.SspId];
                var ts = mms.GetTermSet(column.TermSetId);
                if (!ts.IsOpenForTermCreation) return;
                var addedTerms = new List<Term>();
                bool hasChanges = false;
                foreach (var tag in tags)
                {
                    if (tag.Length > MAX_LENGTH) continue;
                    var validTag = GetValidTermName(tag);
                    Term matchingTerm=null;
                    if (column.IsKeyword)
                    {
                        TermCollection terms = mms.GetTerms(validTag, false, StringMatchOption.ExactMatch, 1, true);
                        if (terms.Count > 0)
                            matchingTerm = terms[0];
                    }
                    else
                    {
                        TermCollection terms = ts.GetTerms(validTag, false, StringMatchOption.ExactMatch, 1, true);
                        if (terms.Count > 0)
                            matchingTerm = terms[0];
                    }
                    if (matchingTerm == null)
                    {
                        matchingTerm = ts.CreateTerm(validTag, mms.WorkingLanguage);
                        hasChanges = true;
                    }
                    if (!addedTerms.Contains(matchingTerm))
                    {
                        addedTerms.Add(matchingTerm);
                    }
                }
                if (hasChanges) mms.CommitAll();
                if (addedTerms.Count > 0)
                { 
                    if (column.AllowMultipleValues)
                        column.SetFieldValue(item, addedTerms, mms.WorkingLanguage);
                    else
                        column.SetFieldValue(item, addedTerms[0]);
                }
            }   

    MOSS技术交流群:69022156


            internal const int MAX_LENGTH = 255;
            internal static readonly Regex NameRegex = new Regex("[;<>|\t]", RegexOptions.Compiled | RegexOptions.IgnoreCase);
            internal static readonly Regex SpaceRegex = new Regex("[ ]{2,}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
            private string GetValidTermName(string name)
            {
                if (NameRegex.IsMatch(name))
                {
                    name = NameRegex.Replace(name, " ");

                }
                name = SpaceRegex.Replace(name, " ");
                name = name.Length > MAX_LENGTH ? name.Substring(0, MAX_LENGTH) : name;
                name = name.Replace(Convert.ToChar(38), Convert.ToChar(65286));
                return name.Trim();
            }
            private void WriteTagsToFolksonomyColumn(IEnumerable<string> tags, SPListItem item, TaxonomyField column)
            {
                if (!column.IsTermSetValid) return;
                if (!column.Open) return;
                var session = new TaxonomySession(item.Web.Site);
                var mms = session.TermStores[column.SspId];
                var ts = mms.GetTermSet(column.TermSetId);
                if (!ts.IsOpenForTermCreation) return;
                var addedTerms = new List<Term>();
                bool hasChanges = false;
                foreach (var tag in tags)
                {
                    if (tag.Length > MAX_LENGTH) continue;
                    var validTag = GetValidTermName(tag);
                    Term matchingTerm=null;
                    if (column.IsKeyword)
                    {
                        TermCollection terms = mms.GetTerms(validTag, false, StringMatchOption.ExactMatch, 1, true);
                        if (terms.Count > 0)
                            matchingTerm = terms[0];
                    }
                    else
                    {
                        TermCollection terms = ts.GetTerms(validTag, false, StringMatchOption.ExactMatch, 1, true);
                        if (terms.Count > 0)
                            matchingTerm = terms[0];
                    }
                    if (matchingTerm == null)
                    {
                        matchingTerm = ts.CreateTerm(validTag, mms.WorkingLanguage);
                        hasChanges = true;
                    }
                    if (!addedTerms.Contains(matchingTerm))
                    {
                        addedTerms.Add(matchingTerm);
                    }
                }
                if (hasChanges) mms.CommitAll();
                if (addedTerms.Count > 0)
                {
                    if (column.AllowMultipleValues)
                        column.SetFieldValue(item, addedTerms, mms.WorkingLanguage);
                    else
                        column.SetFieldValue(item, addedTerms[0]);
                }
            }  

    上善若水 海纳百川
  • 相关阅读:
    《Python编程从入门到实践》学习笔记<7>:用户输入和while循环
    《Python编程从入门到实践》学习笔记<6>:字典
    《Python编程从入门到实践》学习笔记<5>:IF语句
    Navicat12激活,版本v12.1.18
    将博客搬至CSDN
    SVN中文提示
    SQL Server行转列
    .net操作AD域
    当经历过,你成长了,自己知道就好
    Outlook2010 POP3方式连接Hotmail等邮箱的错误处理
  • 原文地址:https://www.cnblogs.com/NetUser/p/2608657.html
Copyright © 2011-2022 走看看