zoukankan      html  css  js  c++  java
  • SharePoint 2013 Create Folder with conententtype programer

           记录一下昨天写的SharePoint tool,需求是这样的:

           在SharePoint list subfolder 下创建1000个folder,这些folder指定特殊的contenttype,contenttype中有一个Taxonomy类型的field,为这个filed赋值,并且新创建的这些folder下只能创建指定contenttype的file。

           创建folder的代码如下:

            

     public static void CreatFolder(string siteUrl)//传入site url
            {
                using (SPSite site = new SPSite(siteUrl))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists.TryGetList("your list title");
                        if (list != null)
                        {
                            SPSecurity.RunWithElevatedPrivileges(() =>
                            {
                                web.AllowUnsafeUpdates = true;
                                SPFolder BAFolder = list.RootFolder.SubFolders.Cast<SPFolder>().
                                    FirstOrDefault(f => f.Name.Equals("your folder name or root folder", StringComparison.OrdinalIgnoreCase));
                                if (BAFolder.Exists)
                                {
                                    TaxonomyFieldValue taxonomyFieldValue = GetTaxonomyFieldValue(site, list);
                                    for (int i = 100000; i < 101001; i++)
                                    {
                                        string gvName = "GV" + i;
                                        SPListItem newItem = list.Items.Add(BAFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, gvName);
                                        newItem[SPBuiltInFieldId.ContentTypeId] = list.ContentTypes["your content type name"].Id;
                                        newItem.Update();
                                        newItem["Title"] = gvName;
    //为Taxonomy field 赋值 newItem[
    "your taxonomy field internal name"] = taxonomyFieldValue; newItem.Update(); list.Update();
    //为新创建的folder指定UniqueContentTypeOrder即在new folder下只能创建UniqueContentTypeOrder中包含的contenttype类型的file or folder SPFolder gvFolder
    = newItem.Folder; Collection<SPContentType> gvFolderOrderedContentTypes = new Collection<SPContentType>(); for (int j = 0; j < list.ContentTypes.Count; j++) { if (list.ContentTypes[j].Name == "your contenttype name") { gvFolderOrderedContentTypes.Add(list.ContentTypes[j]); } } gvFolder.UniqueContentTypeOrder = gvFolderOrderedContentTypes; gvFolder.Update(); } } web.AllowUnsafeUpdates = false; }); } } } }
     private static TaxonomyFieldValue GetTaxonomyFieldValue(SPSite site, SPList list)
            {
                TaxonomySession session = new TaxonomySession(site);
                TermStore termStore = session.TermStores["Managed Metadata Service"];
                Group group = termStore.Groups["group name"];
                TermSet termSet = group.TermSets["termset name"];
                Term term = termSet.Terms["term name"];
                
    //获取TaxonomyFieldValue TaxonomyField taxonomyField
    = list.Fields["your taxonomy field name"] as TaxonomyField; TaxonomyFieldValue taxonomyFieldValue = new TaxonomyFieldValue(taxonomyField); taxonomyFieldValue.TermGuid = term.Id.ToString(); taxonomyFieldValue.Label = term.Name; return taxonomyFieldValue; }

    希望对大家有所帮助!

  • 相关阅读:
    Lesson_6 作业_1 封装学生类
    Lesson_6_1 上课笔记 张三和法拉利
    Lesson_3 作业_3 输出字母金字塔
    Java简介
    Lesson_7 上课笔记_1 static关键字和导包
    软件设计师考试大纲
    <<设计模式可复用面向对象软件的基础>>组合模式(Composite)
    CS1595:已在多处定义
    <<设计模式可复用面向对象软件的基础>>读书笔记(第一章)引言
    <<设计模式可复用面向对象软件的基础>>设计模式怎样解决设计问题
  • 原文地址:https://www.cnblogs.com/qindy/p/6272333.html
Copyright © 2011-2022 走看看