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

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

  • 相关阅读:
    Redis主从同步分析(转)
    Jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】(转)
    PHP之PDO_MYSQL扩展安装步骤(转)
    MongoDB 那些坑(转)
    CF 222 (DIV 1)
    TC SRM601
    TC SRM600 DIV2
    Github入门教程
    2013长春区域赛总结
    退役了~~~~~~~~~~~~
  • 原文地址:https://www.cnblogs.com/zchblog/p/3165061.html
Copyright © 2011-2022 走看看