使用可视化页面创建SharePoint2010列表是件很简单的事,只需要使用鼠标通过点击即可实现创建一个完整的列表,可以在创建窗口上选择列表模板来创建不同类型的列表实例,以实现存储不同类型的数据。如图1所示的创建窗口:
图1
图1是SharePoint2010所有列表模板,当然我们也可以开发自己的列表模板存放在图1中。一般情况下没有特殊需要都以“自定义列表”模板来创建列表实例,基于“自定义列表”模板创建的列表默认情况下只有一个“标题”字段可供用户输入数据,用户也可以添加自己的栏来存储其他类型的数据。也就是说在SharePoint2010中要想创建列表必须基于某个模板来创建,使用对象模型创建列表也是如此。
下面是在VS2010中使用对象模型创建列表的例子,并使用Feature部署,如图2所示:
图2
在图2的VS2010解决方案资源管理器中右击“Features”文件夹,并在弹出的菜单中选择“添加功能”,如图3所示:
图3
在图3中将创建的功能Feature1的名称修改为“CreateList”并右击它,在弹出的菜单中点击其中的“添加事件接收器”,如图4所示:
图4
在图4中创建的CreateListEventReceiver类继承于SPFeatureReceiver基类,此类主要用于处理在激活、停用、安装、卸载和升级功能的过程中引发的事件。
图4的FeatureActivated事件是用来处理在激活Feature时执行的代码,要创建列表首先要实例化一个SPSite对象,代码如下:
1 |
using (SPSite site = new SPSite(“http: |
在using中实例化SPSite对象不用手工释放资源,比较安全,建议使用此方法实例化对象。使用SPSite对象用来实例化一个网站集的对象,这也是所有对网站操作的入口。
然后再在SPSite对象上获取一个网站,因为列表是在网站上存在的,所以还需要创建一个SPWeb对象,代码如下:
1 |
using (SPSite site = new SPSite(“http: |
3 |
using (SPWeb web = site.RootWeb) |
上面的代码中使用site.RootWeb来获取网站集中的根网站。下面我们在根网站下基于“自定义列表”模板来创建一个列表。完整的代码如下:
01 |
public override void FeatureActivated(SPFeatureReceiverProperties properties) |
04 |
using (SPSite site = new SPSite(“http: |
07 |
using (SPWeb web = site.RootWeb) |
10 |
web.AllowUnsafeUpdates = true ; |
12 |
Guid newListId = web.Lists.Add( "项目总结" , "列表描述" , SPListTemplateType.GenericList); |
14 |
SPList list = web.Lists[newListId]; |
16 |
list.OnQuickLaunch = true ; |
在上面的代码中,在SPWeb对象上使用AllowUnsafeUpdates属性来设置允许在网站中添加列表的操作。创建列表要使用SPWeb对象的Lists.Add()方法,返回的类型为GUID,web.Lists.Add()方法中的三个参数的含义如下:
- 第一个参数表示创建列表的标题。
- 第二个参数表示对列表的描述。
- 第三个参数是使用SPListTemplateType获取要基于那个列表模板创建列表,GenericList表示自定义列表模板。
创建好的列表就可以根据其GUID来获取SPList对象了,获取到SPList对象之后,就可以使用SPList的OnQuickLaunch属性设置此列表是否在快速启动栏上显示。最后使用List.Update()更新以上的所有操作。
上面的代码是在激活Feature时就创建列表的例子,下面我们再写一段代码,当此Feature被停用时就删除创建的列表,这段代码要写在图4的FeatureDeactivating事件中。完整的代码如下:
01 |
public override void FeatureDeactivating(SPFeatureReceiverProperties properties) |
03 |
using (SPSite site = new SPSite(“http: |
05 |
using (SPWeb web = site.RootWeb) |
07 |
web.AllowUnsafeUpdates = true ; |
08 |
SPList list = web.Lists[ "项目总结" ]; |
在上面的代码中首先按刚才创建的列表名称获取到SPList对象,然后再使用SPList对象的Delete()方法删除此列表。
上面所有代码编写完成之后,就可以使用VS2010的部署功能将此Feature部署到SharePoint2010的根网站上,部署成功之后,我们打开“网站操作”菜单下的“网站设置”页面并点击其中的“管理网站功能”链接,如图5所示:
图5
在图5的顶部我们可以看到一个名称为:“Example.SharePoint2010 Feature1”的功能,它就是我们在上面部署的创建列表的Feature。VS2010部署时会自动安装、部署此Feature。因为我们在激活Feature时编写了创建列表的代码,所以我们应该能在根网站下看到创建的新列表,如图6所示:
图6
如图6看到的“项目总结”列表就是我们使用SharePoint2010对象模型创建的列表。由于是基于“自定义列表”模板创建的,所以在图6中只能看到此列表的一个“标题”栏。
由于我们在停用此Feature时编写了一段删除“项目总结”列表的代码,所以当我们在图5中点击“Example.SharePoint2010 Feature1”功能的“停用”按钮,则会删除“项目总结”列表,如图7所示:
图7
如图7所示在左侧的快速启动栏上已经看不到“项目总结”的列表了,且右侧的“Example.SharePoint2010 Feature1”功能已处于“停用”状态了。也就是我们在停止Feature时编写删除列表的代码已经起作用了。