一个简单的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
}
public class DocumentLibraryEvent : IListEventSink 2
{3
IListEventSink Members31
}这段代码很好理解,判断是Insert和Update并且包含这个字段,然后获取url修改field的值。
下面这段代码主要为解决新建一个文档时,去修改Selected字段值,抛出被checkout的异常。
这段代码来自Jan Tielens' Bloggings
1
2
while (file.CheckOutStatus != SPFile.SPCheckOutStatus.None)
3
{
4
System.Threading.Thread.Sleep(1000);
5
file = web.GetFile(listEvent.UrlAfter);
6
}

2
while (file.CheckOutStatus != SPFile.SPCheckOutStatus.None)3
{4
System.Threading.Thread.Sleep(1000);5
file = web.GetFile(listEvent.UrlAfter);6
}
这段代码可以实现需求,但是总感觉不美。
似乎是应该这样去修改:
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了,我们的事件就会被执行了。

}
浙公网安备 33010602011771号