无法使用客户端对象模型在SharePoint 2010中创建列表

时间:2010-05-19 15:31:18

标签: sharepoint-2010

我正在尝试利用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)
   {
      //...
   }
}

运行此代码时会发生一些意想不到的事情:

  1. 我的模板源自默认文档库模板。现在,上面的代码不会基于我的模板创建文档库 - 而是创建默认文档库。

  2. 如果我取消注释//listInfo.TemplateFeatureId = template.FeatureId;代码抛出ServerException错误:“无法完成此操作。请重试。”

  3. 如果我在listInfo.TemplateFeatureId = template.FeatureId;之前放置listInfo.TemplateType = template.ListTemplateTypeKind;,最终结果与第1项相同 - 则会创建默认文档库。

  4. 有人可以帮我理解我做错了什么吗?感谢。

0 个答案:

没有答案