我正在尝试利用SharePoint 2010客户端对象模型基于自定义模板创建List。这是我的代码:
public void MakeList(string title, string listTemplateGUID, int localeIdentifier)
{
string message;
string listUrl;
ListTemplate template;
ListCreationInformation listInfo;
ListTemplateCollection templatesCollection;
try
{
listUrl = title.Replace(spaceChar, string.Empty);
templatesCollection = clientContext.Site.GetCustomListTemplates(clientContext.Web);
clientContext.Load(templatesCollection);
clientContext.ExecuteQuery();
foreach (ListTemplate t in templatesCollection)
{
if (t.InternalName == listTemplate)
{
template = t;
break;
}
}
listInfo = new ListCreationInformation();
listInfo.TemplateType = template.ListTemplateTypeKind;
//listInfo.TemplateFeatureId = template.FeatureId;
listInfo.Url = listUrl;
listInfo.Title = title;
listInfo.Description = string.Empty;
listInfo.QuickLaunchOption = QuickLaunchOptions.On;
site.Lists.Add(listInfo);
clientContext.ExecuteQuery();
return RetrieveList(title, listUrl);
}
catch (ServerException ex)
{
//...
}
}
运行此代码时会发生一些意想不到的事情:
我的模板源自默认文档库模板。现在,上面的代码不会基于我的模板创建文档库 - 而是创建默认文档库。
如果我取消注释//listInfo.TemplateFeatureId = template.FeatureId;
代码抛出ServerException错误:“无法完成此操作。请重试。”
如果我在listInfo.TemplateFeatureId = template.FeatureId;
之前放置listInfo.TemplateType = template.ListTemplateTypeKind;
,最终结果与第1项相同 - 则会创建默认文档库。
有人可以帮我理解我做错了什么吗?感谢。