今天的SharePoint项目实践
今天到客户处部署MOSS 2007项目,并现场编码。
编码部分主要是EventReceiver,要添加Added, Updating, Updated, Deleting四个事件的代码,并更新另一个列表。
首先就是BeforeProperties,AfterProperties 和ListItem三个属性各自代表的意思。不幸的是,MS在MOSS中定义非常混乱;而我在现场coding时又不能上网……
以下是对照表:
|
List--列表 |
BeforeProperties |
AfterProperties |
properties.ListItem |
|
ItemAdding |
No value |
New value |
Null |
|
ItemAdded |
No value |
New value |
New value |
|
ItemUpdating |
No value |
Changed value |
Original value |
|
ItemUpdated |
No value |
Changed value |
Changed value |
|
ItemDeleting |
No value |
No value |
Original value |
|
ItemDeleted |
No value |
No value |
Null |
|
Library--文档库 |
BeforeProperties |
AfterProperties |
properties.ListItem |
|
ItemAdding |
No value |
No value |
Null |
|
ItemAdded |
No value |
No value |
New value |
|
ItemUpdating |
Original value |
Changed value |
Original value |
|
ItemUpdated |
Original value |
Changed value |
Changed value |
|
ItemDeleting |
No value |
No value |
Original value |
|
ItemDeleted |
No value |
No value |
Null |
在没有任何资料的情况下居然蒙对了(我直接使用ing和ed两种方法的ListItem,得到了Original和Changed对于List和Library的统一),运气也未免太好了一点!![]()
主要的感悟就是在MOSS编码时一定要充分考虑到权限问题:默认使用的是当前用户的权限,很多时候,当前用户没有代码给出的权限时,必须要提升权限,就要使用到RunWithElevatedPrivileges,诸如SPSecurity.RunWithElevatedPrivileges(delegate{})的形式,并设置SPWeb.AllowUnsafeUpdates为True。
在EventReceiver开发时,使用OSSEventManager可以快速部署,并且使用VS的调试--附加进程功能可以方便的进行EventReceiver调试。
还有一个感触:Reflector真的是好东西,经常看看MS写的源码,对自己提升确实非常大。
![]()
浙公网安备 33010602011771号