使用Solution添加list模板并根据需要自动创建列表

来源:互联网 发布:mac文件拷贝软件 编辑:程序博客网 时间:2024/06/05 02:17

我们知道SharePoint可以将一个list保存成一个模板,然后使用这个模板创建相同的list。

如果在项目中,也需要创建一些相同的list,那么我们可以把一个list,导出成模板然后添加到solution中,然后根据需要创建list。

具体的方法如下,

1. 导出list模板

使用SharePoint,list setting中的保存模板功能,将list保存为一个模板ListTemplate.stp。然后将这个模板下载下来备用。

2. 在solution中创建一个element,在其下创建一个子文件夹,用来存放列表模板,将创建好的ListTemplate.stp模板上传:


然后设置ListTemplate.stp的属性如下,一定要将Deployment Type设置为ElementFile,才会随着solution一起部署。同时Deployment Location路径设置如下,以便之后使用代码读取。


3. 添加feature receiver,在feature被激活的时候,将ListTemplate上传到list template gallery中:

        public override void FeatureActivated(SPFeatureReceiverProperties properties)        {            SPWeb web = properties.Feature.Parent as SPWeb;            SPSite site = web.Site;            if (null != site)            {                string rootDirectory = properties.Definition.RootDirectory;                if (!rootDirectory.EndsWith(@"\"))                {                    rootDirectory = rootDirectory + @"\";                }                string path = rootDirectory + "ListTemplate";                if (Directory.Exists(path))                {                    string[] templateFiles = Directory.GetFiles(path, "*.stp", SearchOption.TopDirectoryOnly);                    SPDocumentLibrary catalog = site.GetCatalog(SPListTemplateType.ListTemplateCatalog) as SPDocumentLibrary;                    this.UploadTemplate(catalog, templateFiles);                }            }        }
4. 部署solution,并且激活feature之后,就可以在List Gallery中找到ListTemplate.stp模板了。

既然模板已经 有了,根据ListTemplate.stp模板创建list就很简单了,参见以下方法:

        public void CreateListByTemplate(SPSite web)        {            SPListTemplateCollection listTemplates = web.Site.GetCustomListTemplates(web);            foreach (SPListTemplate spListTemplate in listTemplates)            {                if(spListTemplate.InternalName.StartsWith("ListTemplate"))                {                    try                    {                        Guid listId = web.Lists.Add(spListTemplate.Name, spListTemplate.Description, spListTemplate);                    }                    catch                    {                    }                }            }        }




0 0
原创粉丝点击