SharePoint 2010禁止删除列表项事件接收器Demo

SharePoint2010在列表及列表项的操作上给二次开发提供了方便,使开发人员很容易的就可以控制列表及列表项的相关操作。这些API都在Microsoft.SharePoint.dll中,有时候我们在操作列表项时,总会产生一些误操作,将一些重要的数据给删除掉了,后悔莫及,虽然也可以通过回收站把数据找回来,但如果回收站也给清空了,那麻烦可就大了,这时就有必要在列表项上做一个事件接收器,当有列表项要删除时,就提示用户此项的重要性,不可删除。

这就要对列表项做删除前的事件监听,如果有用户试图要删除列表项,则接收器就会禁止删除并给出提示信息,下面我们就在VS2010创建列表项删除前事件接器,如图1所示:

VS2010中开发SharePoint 2010事件处理器

图1

在图1中左侧选择“SharePoint 2010”然后在右侧选中“事件接收器”,名称为:EventReceiverToItemDeleting,点击“添加”按钮,如图2所示:

在VS2010向导中选择正在删除项事件接收器

图2

在图2的自定义向导中:

1) 需要哪种类型的事件接收器:因为我们是监听列表项的删除动作,所以在这里要选择“列表项事件”。

2) 哪个项应为事件源:在这里要选择列表项事件应依附于那个列表,也就是在那个列表上删除项时要附加事件,在这里选择“任务”列表。

3) 处理以下事件:在这里选择使用列表项的那个动作,因为我们是监听删除前的动作,所以这里要选择“正在删除项”,表示在删除前调用的。

上面的3项选择完成之后点击“完成”按钮,如图3所示:

在VS2010中开发事件接收器的相关文件

图3

从图3可以看出来,SharePoint2010的事件接收器项目只有两个文件,一个是Elements.xml,另外一个是EventReceiverToItemDeleting.cs,其中Elements.xml文件主要是用来存储与事件接收器部署时相关的内容,其内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http: //schemas.microsoft.com/sharepoint/">
  <Receivers ListTemplateId="107">
    <Receiver>
      <Name>EventReceiverToItemDeletingItemDeleting</Name>
      <Type>ItemDeleting</Type>
      <Assembly>$SharePoint.Project.
       AssemblyFullName$</Assembly>
      <Class>Example.SharePoint2010.EventReceiver.
      EventReceiverToItemDeleting.
       EventReceiverToItemDeleting</Class>
      <SequenceNumber>10000</SequenceNumber>
    </Receiver>
  </Receivers>
</Elements>

而EventReceiverToItemDeleting.cs主要是用来编写事件接收器的代码的,如图4所示:

VS2010自动生成的ItemDeleting事件处理器代码

图4

在图4中可以看到我们创建的类继承了SPItemEventReceiver类,在SharePoint2010中所有的列表项事件都继承于SPItemEventReceiver类。而SPItemEventReceiver又继承于SPEventReceiverBase基类。然后我们就可以重载ItemDeleting方法编写删除前事件了,由于我们编写的删除前事件接收器的功能是禁止删除列表项,所以代码如下:

/// <summary>
/// 正在删除项.
/// </summary>
public override void ItemDeleting(SPItemEventProperties properties)
{
    //取消删除事件操作
    properties.Cancel = true;
    //错误提示信息
    properties.ErrorMessage = "此项非常重要,禁止删除!";
}

所有SharePoint 2010列表项事件接收器都有一个SPItemEventProperties类型的参数,所有与列表项相关的操作都可以在与参数中获得。

在ItemDeleting事件中,使用SPItemEventProperties类型参数的Cancel=true来取消删除列表项动作,然后使用ErrorMessage属性输出错误提示信息。

完成之后在VS2010的项目右键菜单中使用“部署”命令来完成事件接收器的部署,部署完成之后我们就可以测试一下此事件接收器了,如图5所示:

在列表中删除列表项目

图5

由于我们在图1选择的事件源为“任务”列表,所以我们测试时就要删除某个任务项看是否能删除掉,在图5中点击“删除项目”,如图6所示:

禁止删除列表项事件接收器的提示信息

图6

如图6所示,SharePoint2010弹出了错误提示信息,也就是我们在代码中使用

properties.ErrorMessage属性设置的信息。现在我们再返回到任务列表并刷新一下,如图7所示:

在列表中查看未删除的项

图7

如图7所示,任务列表中的第二项还存在,刚才的删除操作没有成功,也就是我们开发的禁止删除列表项功能事件接收器已经起作用了。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值