现在的位置: 首页 > 综合 > 正文

使用对象模型创建SharePoint2010列表并使用Feature部署

2016年10月27日 ⁄ 综合 ⁄ 共 2809字 ⁄ 字号 评论关闭

使用可视化页面创建SharePoint2010列表是件很简单的事,只需要使用鼠标通过点击即可实现创建一个完整的列表,可以在创建窗口上选择列表模板来创建不同类型的列表实例,以实现存储不同类型的数据。如图1所示的创建窗口:

创建列表时的列表模板

图1

图1是SharePoint2010所有列表模板,当然我们也可以开发自己的列表模板存放在图1中。一般情况下没有特殊需要都以“自定义列表”模板来创建列表实例,基于“自定义列表”模板创建的列表默认情况下只有一个“标题”字段可供用户输入数据,用户也可以添加自己的栏来存储其他类型的数据。也就是说在SharePoint2010中要想创建列表必须基于某个模板来创建,使用对象模型创建列表也是如此。

下面是在VS2010中使用对象模型创建列表的例子,并使用Feature部署,如图2所示:

VS2010解决方案资源管理器添加Feature功能

图2

在图2的VS2010解决方案资源管理器中右击“Features”文件夹,并在弹出的菜单中选择“添加功能”,如图3所示:

给Feature添加事件接收器

图3

在图3中将创建的功能Feature1的名称修改为“CreateList”并右击它,在弹出的菜单中点击其中的“添加事件接收器”,如图4所示:

继承于SPFeatureReceiver基类的Feature功能类

图4

在图4中创建的CreateListEventReceiver类继承于SPFeatureReceiver基类,此类主要用于处理在激活、停用、安装、卸载和升级功能的过程中引发的事件。

图4的FeatureActivated事件是用来处理在激活Feature时执行的代码,要创建列表首先要实例化一个SPSite对象,代码如下:

1 using
(SPSite site =
new
SPSite(“http:
//develop”))
2 {
3 }

在using中实例化SPSite对象不用手工释放资源,比较安全,建议使用此方法实例化对象。使用SPSite对象用来实例化一个网站集的对象,这也是所有对网站操作的入口。

然后再在SPSite对象上获取一个网站,因为列表是在网站上存在的,所以还需要创建一个SPWeb对象,代码如下:

1 using
(SPSite site =
new
SPSite(“http:
//develop”))
2 {
3 using
(SPWeb web = site.RootWeb)
4 {
5 }
6 }

上面的代码中使用site.RootWeb来获取网站集中的根网站。下面我们在根网站下基于“自定义列表”模板来创建一个列表。完整的代码如下:

01 public
override
void
FeatureActivated(SPFeatureReceiverProperties properties)
02 {
03 //实例化SPSite对象
04 using
(SPSite site = new
SPSite(“http://develop”))
05 {
06 //获取SPWeb对象
07 using
(SPWeb web = site.RootWeb)
08 {
09 //允许在不安全的Get上更新
10 web.AllowUnsafeUpdates =
true;
11 //在网站中添加基于自定义模板的列表
12 Guid newListId = web.Lists.Add("项目总结",
"列表描述", SPListTemplateType.GenericList);
13 //获取创建好的列表
14 SPList list = web.Lists[newListId];
15 //在快速启动栏上显示此列表
16 list.OnQuickLaunch =
true;
17 list.Update();
18 }
19 }
20 }

在上面的代码中,在SPWeb对象上使用AllowUnsafeUpdates属性来设置允许在网站中添加列表的操作。创建列表要使用SPWeb对象的Lists.Add()方法,返回的类型为GUID,web.Lists.Add()方法中的三个参数的含义如下:

  1. 第一个参数表示创建列表的标题。
  2. 第二个参数表示对列表的描述。
  3. 第三个参数是使用SPListTemplateType获取要基于那个列表模板创建列表,GenericList表示自定义列表模板。

创建好的列表就可以根据其GUID来获取SPList对象了,获取到SPList对象之后,就可以使用SPList的OnQuickLaunch属性设置此列表是否在快速启动栏上显示。最后使用List.Update()更新以上的所有操作。

上面的代码是在激活Feature时就创建列表的例子,下面我们再写一段代码,当此Feature被停用时就删除创建的列表,这段代码要写在图4的FeatureDeactivating事件中。完整的代码如下:

01 public
override
void
FeatureDeactivating(SPFeatureReceiverProperties properties)
02 {
03 using
(SPSite site = new
SPSite(“http://develop”))
04 {
05 using
(SPWeb web = site.RootWeb)
06 {
07 web.AllowUnsafeUpdates =
true;
08 SPList list = web.Lists["项目总结"];
09 list.Delete();
10 }
11 }
12 }

在上面的代码中首先按刚才创建的列表名称获取到SPList对象,然后再使用SPList对象的Delete()方法删除此列表。

上面所有代码编写完成之后,就可以使用VS2010的部署功能将此Feature部署到SharePoint2010的根网站上,部署成功之后,我们打开“网站操作”菜单下的“网站设置”页面并点击其中的“管理网站功能”链接,如图5所示:

SharePoint2010网站功能

图5

在图5的顶部我们可以看到一个名称为:“Example.SharePoint2010 Feature1”的功能,它就是我们在上面部署的创建列表的Feature。VS2010部署时会自动安装、部署此Feature。因为我们在激活Feature时编写了创建列表的代码,所以我们应该能在根网站下看到创建的新列表,如图6所示:

使用对象模型创建的列表

图6

如图6看到的“项目总结”列表就是我们使用SharePoint2010对象模型创建的列表。由于是基于“自定义列表”模板创建的,所以在图6中只能看到此列表的一个“标题”栏。

由于我们在停用此Feature时编写了一段删除“项目总结”列表的代码,所以当我们在图5中点击“Example.SharePoint2010 Feature1”功能的“停用”按钮,则会删除“项目总结”列表,如图7所示:

激活或停用Feature功能

图7

如图7所示在左侧的快速启动栏上已经看不到“项目总结”的列表了,且右侧的“Example.SharePoint2010 Feature1”功能已处于“停用”状态了。也就是我们在停止Feature时编写删除列表的代码已经起作用了。

抱歉!评论已关闭.