最近在做项目的过程中,遇到个问题,创建一个SharePoint站点,在站点首页(default.aspx)添加了几个列表WebPart(ListViewWebPart),WebPart选用了自定义的视图,并将列表WebPart工具栏类型设置成“没有工具栏”,整体的效果如下图:
接着将SharePoint站点另存成模板,然后基于此模板创建个新站点,结果新站点创建完成后,原来模板中首页WebPart所应用的视图和工具栏类型都恢复到默认的样子,如下图:
这样下来又要从头到尾的手动调整WebPart的样式,想想有些崩溃。这样的站点要通过程序创建200多个,手动调整起来只能吐血了。于是开始研究如何通过代码来完成调整的任务,让他创建完站点以后自动样式调整。基本的实现思路如下:
1、首先找到首页(default.aspx)的WebPart管理对象(SPLimitedWebPartManager).
2、用SPLimitedWebPartManager搞到页面里所有的WebPart。
3、过滤掉非列表WebPart(ListViewWebPart)。
4、剩下的开始逐一处理,先调整视图,在调整它的工具栏类型。
5、最后保存调整的结果。
实现的代码如下:
搞个命令行程序测试一下:
{
static void Main(string[] args)
{
SPSite site = new SPSite("http://liust-server:100");
SPWeb icmWeb = site.AllWebs["ITSImportanceCustomerManagement"];
SPWeb customWeb = icmWeb.Webs["DKHWebTemplate"];
Program p = new Program();
p.ChangeWebPartLayout(customWeb);
Console.Write("ok");
Console.ReadKey();
}
}
至此,这个问题就搞定了,可以休息一下了。