对sharepoint 的form library的事件进行处理(二)开发事件处理程序

原创 2006年05月17日 18:12:00

对sharepoint 的form library的事件进行处理(二)开发事件处理程序

一、代码
事件处理程序需要实现IListEventSink接口。这个接口只有一个必须实现的方法public void  OnEvent(SPListEvent listEvent)。所有的处理都在这里完成。
public void  OnEvent(SPListEvent listEvent)
{

}

1。如何访问library的field
SharePointWeb  = listEvent.Site.OpenWeb();
if (listEvent.UrlAfter != null)
{
  SharePointEventItem = SharePointWeb.GetFile(listEvent.UrlAfter);
  oItem = SharePointEventItem.Item;
}
else
{
  return;
}
int ProjectID= System.Convert.ToInt32(oItem["ProjectID"].ToString());

2。delete事件的特殊性
不是所有的事件中都可以取到field的值。sharepoint的delete事件是在list中的文档被删除后才被触发的,因为这时实际数据已经被删除了,所以此时对oItem["ProjectID"]访问会议发异常。
不过,天无绝人之路,Delete事件中还有可以利用的信息。就是listEvent.ListID和istEvent.UrlBefore。(ListID是library的唯一标示,而UrlBefore是被删除文档的路径名。)

在Insert事件中,记录下listEvent.ListID和listEvent.UrlAfter和Event的对应关系
   Barsvr.UpdateEventLink(listEvent.ListID.ToString() ,listEvent.UrlAfter ,ProjectID);
在delete事件中,根据listEvent.ListID和listEvent.UrlBefore找到对应的Event,并删除。
   Barsvr.DeleteEvent(listEvent.ListID.ToString(),listEvent.UrlBefore);  

3. 对sharepoint数据的访问需要身份验证。
事件处理程序是在sharepoint的appicaition pool下运行。一般情况下,sharepoint的appicaition pool运行的账号没有权限访问library的数据。所以需要模拟用户身份来访问。
WindowsImpersonationContext wip=null;
try
{
 wip = null;
 //Impersonate the appropriate user
 WindowsIdentity id = CreateIdentity("username","domain","passsword");
 if (id != null)
 {
  wip = id.Impersonate();
  。。。。开始访问sharepoint数据
 }
}
catch(Exception ex)
{
 System.Diagnostics.EventLog.WriteEntry("Event Log Test Error3", ex.Message , System.Diagnostics.EventLogEntryType.Information, 0 );
}
finally
{
 //Cleanup
 if (wip != null)
  wip.Undo();
}

4 对WEB SERVICE调用需要数字证书
BarServices.Service  Barsvr = new BarServices.Service();
System.Net.CredentialCache cache = new System.Net.CredentialCache();
cache.Add(new Uri(Barsvr.Url), "Negotiate", new System.Net.NetworkCredential("username","password","domain"));
Barsvr.Credentials = cache;
Barsvr.DeleteEvent(listEvent.ListID.ToString(),listEvent.UrlBefore);  


二、GUID,strong name和版本号
这里是AssemblyInfo.cs的有关内容,
[assembly: Guid("F4E70578-3443-4ff3-98F2-6A69147BB687")]
[assembly: AssemblyVersion("1.0.0.48")]
[assembly: AssemblyFileVersion("1.0.0.48")]
[assembly: AssemblyKeyFile(@"D:/ctc/Ops/EWS/Bar/WSS/BarEventSink/reference/BarEventSink.snk")]

1 生成GUID, 在Visual Studio, Tools->Create GUID. 选registry format. 选new GUID.
2 生成strong name, 用sn工具生成strong name
3 为了系统维护,一定要管理好版本号。

 

【js学习笔记-092】-----事件处理程序的调用

事件处理程序的调用 接下来会详细介绍事件处理程序的调用,说明事件处理程序的参数,调用上下文、调用作用域和事件处理程序返回值的意义。遗憾的是,这些内容中的一部分在IE8及以前版本中和其他浏览器中是同的 ...
  • pigpigpig4587
  • pigpigpig4587
  • 2014年02月07日 10:45
  • 1094

js学习笔记:事件——事件流、事件处理程序、事件对象

Javascript与HTML之间的交互是通过事件实现的。 事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。 可以使用侦听器来预定事件,以便事件发生时执行相应代码。事件流事件流描述的是从页面...
  • crystal6918
  • crystal6918
  • 2016年10月25日 11:31
  • 2773

如何安全删除基于对话框的MFC中控件的事件处理程序

如上图,要删除的为“启动服务”按钮控件,其ID为 IDC_START,此控件已存在一个事件处理程序,先打算将其删除。 共需删除三个地方的代码。 第一,事件处理程序的原代码。 ...
  • lwqhuiji
  • lwqhuiji
  • 2015年10月28日 10:51
  • 1240

对sharepoint 的form library的事件进行处理(三)部署到sharepoint

第一步:设置sharepoint站点SharePoint Portal Server Central Administration 打开站点管理选择左侧菜单Windows SharePoint Ser...
  • yanwei100
  • yanwei100
  • 2006年05月17日 16:38
  • 871

初学MFC——VS2013下对话框类和事件处理函数的添加

在对话框(不是具体的某个控件上右键): 选择添加类,然后按照指示添加即可;  对某个控件添加事件处理函数,移动光标到你要添加函数的控件,右键:选择添加事件处理程序,然后照着指示做就...
  • lck32578
  • lck32578
  • 2015年06月13日 11:29
  • 1134

使用欢迎使用事件处理程序向导的问题

我添加了一个dialog资源,在这个资源上访了一个button资源, 点右键添加事件处理程序,发现发现消息类型框是空的,应该怎么解决,很奇观。 另外,加了这个类以后,我这个mfc的系统最初生成的a...
  • zhujiu7386
  • zhujiu7386
  • 2017年01月03日 04:35
  • 328

Android处理输入事件的流程(一)

我一直觉得要想学习Android,我们有必要研究一下Android的输入子系统,Android手机最主要的输入是触摸屏和各种传感器。因为我的开发板是盒子,加上自己没有触摸屏的条件,所以我都是以USB键...
  • cyz_1257
  • cyz_1257
  • 2016年06月19日 12:25
  • 887

delphi中form创建及销毁事件的处理顺序

Delphi中Form有非常多的事件,他们每个
  • zkrui2008
  • zkrui2008
  • 2014年10月27日 18:04
  • 1369

VS2010 手动为控件添加事件处理函数

越来越感觉到VS2010 的类向导的坑了,在一些大项目中类向导直接不能使用。今天在为一个按钮控件添加事件处理函数时。类向导死活添加不上函数。无奈只能手动添加了。    下面记录下来,以备以后查询和给...
  • GQB1226
  • GQB1226
  • 2014年01月20日 09:23
  • 2135

sharepoint事件接受器

sharepoint事件接收器
  • jielizhao
  • jielizhao
  • 2015年01月04日 19:29
  • 735
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对sharepoint 的form library的事件进行处理(二)开发事件处理程序
举报原因:
原因补充:

(最多只允许输入30个字)