对sharepoint 的form library的事件进行处理(二)开发事件处理程序
来源:互联网 发布:淘宝优惠券怎么来的 编辑:程序博客网 时间:2024/04/30 00:28
对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 为了系统维护,一定要管理好版本号。
- 对sharepoint 的form library的事件进行处理(二)开发事件处理程序
- 对sharepoint 的form library的事件进行处理(三)部署到sharepoint
- 对sharepoint 的form library的事件进行处理(一)概述
- library cache pin等待事件的处理
- ActivityLifecycleCallbacks 对Activity的生命周期事件进行集中处理
- 控制台程序的事件处理
- 窗体事件的处理程序
- 简单的事件处理程序
- JS的事件处理程序
- JS的事件处理程序
- JavaScript的事件处理程序
- 一个SharePoint事件处理程序实例
- 事件处理程序和跨浏览器的事件处理程序
- 事件处理程序的处理顺序问题
- SharePoint Workflow架构(二)Workflow 事件处理(Event Processing)
- RootForm对form的关于及RootContainer对IWidget的管理和事件处理
- javascript中对各种事件处理程序的个人总结
- 关于对跨浏览器实现的事件处理程序
- Seasons' Show (Oh My God Your Granddaughter's Gone) [UNFINISHED]
- zju 1721 The Doors
- GIS资源汇集(陆续更新中.....)
- 再荐《程序设计语言——实践之路》
- Oracle数据库中对时间字段的处理方法
- 对sharepoint 的form library的事件进行处理(二)开发事件处理程序
- 手把手教你在Eclipse中配置开发Struts(二)
- 数据结构与算法综合资料库(章2)-----综合算法知识-1
- 用ASP连接各种数据库的方法
- XSLT中用normalize-space函数来清除元素的前后空格
- RGB色彩对照表-终极配色手册
- 解决IE下某些页面不能刷新显示的问题
- 经典收藏:Dreamweaver技巧精粹
- 家鄉