如何使用保存的模板通过csom代码创建任务列表

时间:2018-05-05 05:42:51

标签: csom

我使用以下代码使用保存的模板动态地为多个tasklist列表项创建sharepoint。我正在获取现有模板,但无法使用模板创建列表。如何创建tasklist?这是我的代码:

ctx.AuthenticationMode = ClientAuthenticationMode.Default;
                ctx.Credentials = new SharePointOnlineCredentials(GetSPUserName("SiteUserName"), GetSPpwd("SitePassword"));
                Web web = ctx.Web;
                ctx.Load(web,w=>w.ListTemplates);
                ctx.ExecuteQuery();
                ListTemplate template = null;
                ListTemplateCollection ltc = ctx.Site.GetCustomListTemplates(web);
                ctx.Load(ltc);
                ctx.ExecuteQuery();


            foreach (ListTemplate t in ltc)
            {
                if (t.InternalName == "Test.stp")
                {
                    template = t;
                    break;
                }
            }

            ListCreationInformation info = new ListCreationInformation();
            info.Title = "TestCreationOne";
            ctx.Load(template, tL => tL.Name, tL => tL.FeatureId, tL => tL.ListTemplateTypeKind);
            info.TemplateType = template.ListTemplateTypeKind;
            info.TemplateFeatureId = template.FeatureId;
            info.QuickLaunchOption = QuickLaunchOptions.DefaultValue;
            var list=web.Lists.Add(info);
            list.Update();
            ctx.Load(web.Lists);
            ctx.ExecuteQuery();
        }

谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码似乎创建了列表,但未将模板应用于列表。我简化了代码并且工作正常。这是一个参考:

ctx.Credentials = new SharePointOnlineCredentials(GetSPUserName("SiteUserName"), GetSPpwd("SitePassword"));

ListTemplate listTemplate = ctx.Site.GetCustomListTemplates(ctx.Web).GetByName("Test");

ctx.Load(listTemplate);
ctx.ExecuteQuery();

ListCreationInformation info = new ListCreationInformation();
info.Title = "TestCreationOne";
info.ListTemplate = listTemplate;

var list = ctx.Web.Lists.Add(info);
ctx.Load(list);
ctx.ExecuteQuery();

问题可能与以下内容重复:https://sharepoint.stackexchange.com/q/104611/