一个简单的document library event handler
这是一个简单的eventhandler,就是在document lirary中Insert和Update一个Item时,更改一个Field的值为这个文件的URL.
编写doucment library的eventhandler需要继承IListEventSink 接口
代码如下:
1
public class DocumentLibraryEvent : IListEventSink
2
{
3
IListEventSink Members
31
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
这段代码很好理解,判断是Insert和Update并且包含这个字段,然后获取url修改field的值。
下面这段代码主要为解决新建一个文档时,去修改Selected字段值,抛出被checkout的异常。
这段代码来自Jan Tielens' Bloggings
1![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
while (file.CheckOutStatus != SPFile.SPCheckOutStatus.None)
3
{
4
System.Threading.Thread.Sleep(1000);
5
file = web.GetFile(listEvent.UrlAfter);
6
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
这段代码可以实现需求,但是总感觉不美。
似乎是应该这样去修改:
listEvent.PropertiesAfter[colName] = urlVal;
但我尝试了,没有作用!
部署:
1)首先,要打开document library的enventhandler,在central administration->Application Management
->Web Application General Settings
找到想要更改的Web Application,设置
2)把编译后的dll放入GAC
3)到一个想添加事件的document library->Settings->Advanced Settings添加程序集和类
这样就OK了,我们的事件就会被执行了。