zoukankan      html  css  js  c++  java
  • sharepoint 2010 列表中托管元数据列赋值

    在开发中一直都是从解决一个个问题使得code能力有所提升,最近在sharepoint的开发中遇到一个难题。简单描述下。

    做了一个webpart,需要写入一个值到文档库的列,该列类型为托管元数据。当然,要写入的值是在术语集中已经存在的。Baidu,Goole了很多资料多没能解决我的问题,直到cnblog http://www.cnblogs.com/love007/archive/2012/12/06/2805381.html 才成功,非常感谢。我在他的方法上做了简化,目前解决了我的问题。

    思路如下,

    要想通过代码将术语写回到术语集,首先得构造一个该类型的值,然后在写回到托管元数据列。

    1. 定义元数据类

        

    /// <summary>
            /// 托管元数据
            /// </summary>
            public class SPTaxonomyEntity
            {
                /// <summary>
                /// 托管元数据的guid
                /// </summary>
                public string Guid
                {
                    get;
                    set;
                }
                /// <summary>
                /// 托管元数据的名称
                /// </summary>
                public string Name
                {
                    get;
                    set;
                }
            }

    2. 构建值并赋值

    #region//给托管元数据类型赋值
            /// <summary>
            /// 给托管元数据类型赋值
            /// </summary>
            /// <param name="site">当前网站集</param>
            /// <param name="list">当前列表</param>
            /// <param name="listItem">当前列表项</param>
            /// <param name="fieldDisplayName">当前栏目显示名称</param>
            /// <param name="taxName">节点元数据的名称</param>
            /// <param name="guid">所选元数据的GUID</param>
            private static void SetTaxonomyValue(SPSite site, SPList list, SPListItem listItem, string fieldDisplayName, string taxName,string guid)
            {
                try
                {
                    //得到值
                    SPTaxonomyEntity entity = new SPTaxonomyEntity();
                    entity.Guid = guid;
                    entity.Name = taxName;
                    //赋值
                    if (entity != null && !string.IsNullOrEmpty(entity.Guid))
                    {
                        //得到字段
                        TaxonomyField taxonomyField = list.Fields[fieldDisplayName] as TaxonomyField;
                        //字段类型值
                        TaxonomyFieldValue taxonomyFieldValue = new TaxonomyFieldValue(taxonomyField);
                        //赋值
                        taxonomyFieldValue.TermGuid = entity.Guid.ToString();
                        taxonomyFieldValue.Label = entity.Name;
                        //最后赋值
                        if (!string.IsNullOrEmpty(taxonomyFieldValue.Label))
                        {
                            listItem[listItem.Fields[fieldDisplayName].InternalName] = taxonomyFieldValue;
                        }
                    }
                }
                catch (Exception ex)
                {
                    VisualWebPartUploadUserControl.WriteMessageToText(DateTime.Now + "给托管元数据类型栏目[" + fieldDisplayName + "]赋值错误:" + ex.Message);
                }
            }
            #endregion

    以上关键代码通过调用后即可实现效果

  • 相关阅读:
    Centos 配置网易YUM源
    JDK 变量配置
    redis如何解决key冲突?
    大数据技术(1)流式计算与Storm
    20151211小问题
    返回顶部
    20151210小问题2
    20151210小问题
    20151209小问题
    前端程序员的自我修养
  • 原文地址:https://www.cnblogs.com/zchblog/p/3165061.html
Copyright © 2011-2022 走看看