SharePoint自动初始化网站列表

本文介绍了一种使用C#控制台程序自动化在SharePoint网站上创建列表的方法,包括获取模板、创建模板列表及批量创建其他列表。适用于需要部署多套项目的场景。

1,由于目前的SharePoint网站需要部署到多个服务器上,每个网站的内容都不一样,所以使用备份还原是不可以的。常用的方式便是将列表导出为列表模版,然后将列表模版复制到服务器上,根据列表模版创建列表。由于网站中的列表比较多,需要部署多套项目,这项工作就变成了很无聊的一项工作。因此通过编程的方式自动创建所有列表。

2,请看代码(我是用控制台程序创建的列表)

(1)主函数

static void Main(string[] args)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {

                using (SPSite site = new SPSite("http://192.168.1.124/sites/CustomWeb"))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        Console.WriteLine("准备在" + web.Url + "站点上创建列表");
                        web.AllowUnsafeUpdates = true;
                        SPListTemplate customTemplate = GetListTemplate(site, web);
                        if (customTemplate != null)
                        {
                            Console.WriteLine("第(1)步:开始创建《文章模版》列表...");
                            if (CreateArticleTemplate(customTemplate, web))
                            {
                                Console.WriteLine("PS:《文章模版》列表创建成功!");
                                BatchCreateList(web, customTemplate);
                            }
                            else
                            {
                                Console.WriteLine("PS:创建《文章模版》列表过程中出现错误");
                            }
                        }
                        else
                        {
                            Console.WriteLine("PS:没有找到合适的模版");
                        }
                        web.AllowUnsafeUpdates = false;


                        
                    }
                }
            });
            Console.WriteLine("*******************************************************");
            Console.WriteLine("列表全部创建完成");
            Console.ReadLine();


        }
View Code

(2)获取列表模版

private static SPListTemplate GetListTemplate(SPSite site, SPWeb web)
        {
            SPListTemplate CustomTemplate = null;
            try
            {
                SPListTemplateCollection ListTemplateCollection = site.GetCustomListTemplates(web);
                foreach (SPListTemplate template in ListTemplateCollection)
                {
                    if (template.InternalName == "customTemp.stp")
                    {
                        CustomTemplate = template;
                        break;
                    }
                }
            }
            catch (Exception)
            {
                CustomTemplate = null;
            }
            return CustomTemplate;
        }
View Code

(3)创建文章模版列表,该表作为其他列表的外键表,以此创建LookUp类型字段

private static bool CreateArticleTemplate(SPListTemplate customTemplate, SPWeb web)
        {
            bool flag = false;
            try
            {
                //创建列表
                Guid newListGuid = web.Lists.Add("ArticleTemplate", "文章模版列表", customTemplate);
                SPList newList = web.Lists[newListGuid];
                newList.Title = "文章模版";
                //创建字段
                string result = newList.Fields.Add("Template", SPFieldType.Text, false);

                //更改字段英文名为中文
                SPField sf_result = newList.Fields["Template"];
                if (sf_result != null)
                {
                    sf_result.Title = "模版";
                }
                sf_result.Update();
                newList.Update();
                //初始化数据
                SPListItem itemWord = newList.AddItem();
                itemWord["Title"] = "word展示";
                itemWord["Template"] = "<div id=\"OfficeDiv\"><div id=\"FrameDiv\">$word</div></div>";
                itemWord.Update();
                SPListItem itemPic = newList.AddItem();
                itemPic["Title"] = "先图再文";
                itemPic["Template"] = "<div class=newimg>$img </div>$content<p>$editor</p>";
                itemPic.Update();
                flag = true;
            }
            catch (Exception)
            {

            }
            return flag;
        }
View Code

(4)初始化列表数据

private static Dictionary<string, string> InitData()
        {
            Dictionary<string, string> dicInit = new Dictionary<string, string>();
            //德育处列表
            dicInit.Add("MoralDynamic", "德育动态");
            dicInit.Add("MainEducation", "主题教育");
            dicInit.Add("PlanSummary", "计划总结");
            dicInit.Add("BodyHeart", "育体育心");
            dicInit.Add("HealthDynamic", "卫生动态");
            return dicInit;
        }
View Code

(5)批量创建列表

private static void BatchCreateList(SPWeb web, SPListTemplate customTemplate)
        {
            Dictionary<string, string> dics = InitData();
            SPList spList = web.Lists.TryGetList("文章模版");
            int flag = 2;
            try
            {
                foreach (KeyValuePair<string, string> dic in dics)
                {
                    Console.WriteLine("第(" + flag + ")步:开始创建《" + dic.Value + "》列表...");
                    Guid newListGuid = web.Lists.Add(dic.Key, dic.Value + "列表", customTemplate);
                    SPList newList = web.Lists[newListGuid];
                    newList.Title = dic.Value;

                    //创建正文字段
                    string mainbody = newList.Fields.Add("MainBody", SPFieldType.Text, false);
                    SPField sf_mainbody = newList.Fields["MainBody"];
                    if (sf_mainbody != null)
                    {
                        sf_mainbody.Title = "正文";
                    }
                    sf_mainbody.Update();

                    //创建访问数量字段
                    string count = newList.Fields.Add("Count", SPFieldType.Text, false);
                    SPField sf_count = newList.Fields["Count"];
                    if (sf_count != null)
                    {
                        sf_count.Title = "访问数量";
                    }
                    sf_count.Update();

                    //创建模版字段
                    Guid lookupGuid = new Guid(spList.ID.ToString());
                    string template = newList.Fields.AddLookup("Template", lookupGuid, false);
                    SPFieldLookup sf_lookupGuid = newList.Fields["Template"] as SPFieldLookup; //绑定数据List到Lookup字段  
                    sf_lookupGuid.LookupField = spList.Fields["标题"].StaticName;
                    //SPField sf_lookupGuid = newList.Fields["Count"];
                    sf_lookupGuid.Title = "模版";
                    sf_lookupGuid.Update();

                    newList.Update();
                    Console.WriteLine("PS:《" + dic.Value + "》列表创建成功");
                    flag++;
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine("PS:批量创建列表过程失败!!!");
            }
        }
View Code


参考博客:http://blog.youkuaiyun.com/qq873113580/article/details/22668833

 

转载于:https://www.cnblogs.com/wanren/p/4534765.html

(1)普通用户端(全平台) 音乐播放核心体验: 个性化首页:基于 “听歌历史 + 收藏偏好” 展示 “推荐歌单(每日 30 首)、新歌速递、相似曲风推荐”,支持按 “场景(通勤 / 学习 / 运动)” 切换推荐维度。 播放页功能:支持 “无损音质切换、倍速播放(0.5x-2.0x)、定时关闭、歌词逐句滚动”,提供 “沉浸式全屏模式”(隐藏冗余控件,突出歌词与专辑封面)。 多端同步:自动同步 “播放进度、收藏列表、歌单” 至所有登录设备(如手机暂停后,电脑端打开可继续播放)。 音乐发现与管理: 智能搜索:支持 “歌曲名 / 歌手 / 歌词片段” 搜索,提供 “模糊匹配(如输入‘晴天’联想‘周杰伦 - 晴天’)、热门搜索词推荐”,结果按 “热度 / 匹配度” 排序。 歌单管理:创建 “公开 / 私有 / 加密” 歌单,支持 “批量添加歌曲、拖拽排序、一键分享到社交平台”,系统自动生成 “歌单封面(基于歌曲风格配色)”。 音乐分类浏览:按 “曲风(流行 / 摇滚 / 古典)、语言(国语 / 英语 / 日语)、年代(80 后经典 / 2023 新歌)” 分层浏览,每个分类页展示 “TOP50 榜单”。 社交互动功能: 动态广场:查看 “关注的用户 / 音乐人发布的动态(如‘分享新歌感受’)、好友正在听的歌曲”,支持 “点赞 / 评论 / 转发”,可直接点击动态中的歌曲播放。 听歌排行:个人页展示 “本周听歌 TOP10、累计听歌时长”,平台定期生成 “全球 / 好友榜”(如 “好友中你本周听歌时长排名第 3”)。 音乐圈:加入 “特定曲风圈子(如‘古典音乐爱好者’)”,参与 “话题讨论(如‘你心中最经典的钢琴曲’)、线上歌单共创”。 (2)音乐人端(创作者中心) 作品管理: 音乐上传:支持 “无损音频(FLAC/WAV)+ 歌词文件(LRC)+ 专辑封面” 上传,填写 “歌曲信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值