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; }

    希望对大家有所帮助!

  • 相关阅读:
    ASP.NET : 自定义HttpModule的时候要注意的问题
    ASP.NET : Win7 及 IIS 7中对于处理程序映射
    .NET : 一定不要忘记关闭DataReader对象
    IE 8 Accelerator加速器开发介绍{转载}
    .NET : CLR Profiler的使用
    .NET : 在实现WCF的双工服务时可能遇到的问题
    Silverlight学习资源
    .NET : 如何查看值类型的大小
    .NET: 如何通过AppDomain动态加载插件程序
    Web.config中的特殊字符
  • 原文地址:https://www.cnblogs.com/qindy/p/6272333.html
Copyright © 2011-2022 走看看