SharePoint 2007圖文開發(fā)教程(5) 體驗(yàn)Event Handler

Event Handler
Event Handler是SharePoint中與文檔庫(kù)或列表相關(guān)聯(lián)的事件處理程序,當(dāng)我們對(duì)項(xiàng)目進(jìn)行某些操作時(shí),Event Handler就會(huì)截獲這個(gè)事件,然后相應(yīng)的進(jìn)行操作。功能上比較像數(shù)據(jù)庫(kù)中的觸發(fā)器。比如:刪除某個(gè)文件時(shí)向管理員發(fā)送一個(gè)郵件,添加一個(gè)列表時(shí)進(jìn)行其他操作等等。
和2.0相比,WSS3.0對(duì)Event Handler提供了更強(qiáng)大的支持,如:列表,文檔庫(kù),內(nèi)容類型。并且支持同步和異步的操作等。
為SharePoint提供一個(gè)Event Handler并不是很費(fèi)力,主要包括:開啟Event Handler支持,編寫Event Handler程序,向SharePoint中部署Event Handler。接下來(lái)逐一說(shuō)明一下。
開啟Event Handler支持
默認(rèn)情況下是不開啟Event Handler支持的,需要我們手動(dòng)開啟:進(jìn)入應(yīng)用程序管理---進(jìn)入Web應(yīng)用程序常規(guī)設(shè)置。
開啟事件處理程序:
這樣就完成了對(duì)Event Handler開啟的支持。
編寫Event Handler程序
SharePoint的Event Handler其實(shí)是一個(gè)類,這個(gè)類主要繼承WSS中的SPWebEventReceiver,SPEmailEventReceiver,SPListEventReceiver,SPItemEventReceiver,IListEventSink等類,并且重寫相應(yīng)的方法來(lái)完成我們的需求。
這里做個(gè)簡(jiǎn)單的例子,當(dāng)我們刪除一個(gè)Items時(shí),向日志文件中添加一條記錄。
直接看代碼:
C# Code復(fù)制內(nèi)容到剪貼板
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.IO;
- using Microsoft.SharePoint;
- namespace EventHandlerText
- {
- public class ItemLogEvent : SPItemEventReceiver
- {
- /// <summary>
- /// 重寫ItemDeleting,向日志文件寫數(shù)據(jù)
- /// </summary>
- public override void ItemDeleting(SPItemEventProperties properties)
- {
- string path = @"c:\Log.txt";
- string text = "刪除Item" + ":" + DateTime.Now.ToString();
- StreamWriter writer = new StreamWriter(path);
- writer.Write(text);
- writer.Close();
- }
- }
- }
是不是很簡(jiǎn)單,接下來(lái)我們按照為WebPart添加密鑰文件的方法,為我們的Event Handler添加密鑰文件,添加的目的我在部署的時(shí)候再說(shuō)。這樣,簡(jiǎn)單的Event Handler就完成了。
向SharePoint中部署Event Handler
和WebPart有所不同的是,Event Handler的dll需要放到GAC(Global Assembly Cache)中,而不能放在SharePoint網(wǎng)站的bin文件夾中,所以我們生成的dll必須進(jìn)行強(qiáng)簽名,這也就是上面為什么添加密鑰文件的目的。
GAC的系統(tǒng)路徑為:C:\WINDOWS\assembly,直接將生成的Event Handler dll拖入到這個(gè)路徑中即可。
先來(lái)看下SharePoint中的情況:
在我們先前創(chuàng)建的網(wǎng)站中,我創(chuàng)建了一個(gè)文檔庫(kù)的List,并且上傳了一個(gè)word文件,我們的Event Handler就是要添加到這里。
接下來(lái)就是將這個(gè)Event Handler部署到SharePoint中。可以通過(guò)代碼的形式,也可以通過(guò)Feature的形式。這里介紹下代碼的形式。
創(chuàng)建一個(gè)批處理程序(當(dāng)然win程序也可以),添加如下代碼:
- using System;
- using System.Collections.Generic;
- using System.Text;
- using Microsoft.SharePoint;
- namespace RegisterEvent
- {
- class Program
- {
- static void Main(string[] args)
- {
- try
- {
- SPSite site = new SPSite("http://gao:8000/sites/Brian_Publication/");//指定網(wǎng)站
- SPWeb web = site.OpenWeb();
- SPList list = web.Lists["文檔庫(kù)"];//指定List
- list.EventReceivers.Add(SPEventReceiverType.ItemDeleting, "EventHandlerText, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9d965453379ac249", "EventHandlerText.ItemLogEvent");//添加Event Handler
- Console.WriteLine("發(fā)布完成");
- Console.ReadLine();
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- Console.ReadLine();
- }
- }
- }
- }
代碼很容易,想必大家一看就能明白,找到工程生成的可執(zhí)行文件,運(yùn)行:
這樣就代表我們的Event Handler發(fā)布成功啦!至此,Event Handler的部署工作也就完成啦!
最后我們來(lái)測(cè)試下,進(jìn)入文檔庫(kù),刪除那個(gè)“LINQ中文教程”word文件。到C:\下看下Log.txt:
OK,我們的Event Handler執(zhí)行了,實(shí)現(xiàn)了我們想要的效果。
小結(jié):有關(guān)Event Handler的內(nèi)容就介紹到這里,相信大家認(rèn)真的看一邊就可以很輕松的掌握,當(dāng)然有關(guān)Event Handler的內(nèi)容還不止這些,需要在平時(shí)的應(yīng)用中多多積累。
相關(guān)文章
SharePoint 2007圖文開發(fā)教程(8) Excel Services掃盲
SharePoint 2007中,Excel Services是不得不提的,它是 Microsoft Office SharePoint Server 2007 中包含的一項(xiàng)新的服務(wù)器技術(shù)2015-12-29SharePoint 2007圖文開發(fā)教程(7) 在SharePoint中實(shí)現(xiàn)Workflow
繼續(xù)我們的SharePoint之旅,體驗(yàn)Workflow的應(yīng)用,由于以前也很少弄WF,望有什么問題WF的高手多多指教2015-12-29SharePoint 2007圖文開發(fā)教程(6) 實(shí)現(xiàn)Search Services
SharePoint中為我們提供了Search的功能,和Event Handler的實(shí)現(xiàn)比較類似,還是需要啟動(dòng)支持,定制服務(wù),運(yùn)行服務(wù)幾部分內(nèi)容,下面逐一說(shuō)下2015-12-29SharePoint 2007圖文開發(fā)教程(4) 實(shí)現(xiàn)高級(jí)的WebPart
前面的文章中,我們編寫了一個(gè)非常簡(jiǎn)單的WebPart,只是在網(wǎng)頁(yè)中輸出一段字符串。在實(shí)際的應(yīng)用中沒有什么作用。此文和大家分享如何開發(fā)高級(jí)的WebPart,為控件添加事件,實(shí)現(xiàn)2015-12-29SharePoint 2007圖文開發(fā)教程(3) 實(shí)現(xiàn)簡(jiǎn)單的WebPart
在前面的文章中,我們講解了很多基礎(chǔ)的內(nèi)容,主要包括 安裝配置、簡(jiǎn)單的創(chuàng)建網(wǎng)站等。相對(duì)來(lái)說(shuō)比較簡(jiǎn)單。此文實(shí)現(xiàn)簡(jiǎn)單的WebPart,繼續(xù)我們的SharePoint之旅2015-12-29SharePoint 2007圖文開發(fā)教程(2) 使用SharePoint創(chuàng)建網(wǎng)站的步驟
上文簡(jiǎn)單介紹了有關(guān)SharePoint的安裝,配置等內(nèi)容的介紹。此文我們繼續(xù)SharePoint之旅,通過(guò)SharePoint創(chuàng)建網(wǎng)站,需要的朋友可以參考下2015-12-29SharePoint 2007圖文開發(fā)教程(1) 簡(jiǎn)介,安裝,配置及創(chuàng)建Web應(yīng)用程序
Microsoft Office SharePoint Server 2007 是一個(gè)服務(wù)器功能集成套件,它提供全面的內(nèi)容管理和企業(yè)搜索、加速共享業(yè)務(wù)流程并便利跨界限信息共享以更好地了解業(yè)務(wù),從而有助2015-12-29SharePoint Designer 2007 官方簡(jiǎn)體中文版
Frontpage 2003的下一個(gè)版本,不過(guò)這個(gè)版本絕對(duì)不是Frontpage 2003的簡(jiǎn)單改進(jìn)版,Microsoft Office SharePoint Designer 2007 是一種全新的Web2.0產(chǎn)品,用于基于 SharePoin2015-12-29Microsoft Office SharePoint Server 2007 SDK軟件開發(fā)工具包 簡(jiǎn)體中文
為了讓解決方案提供商、獨(dú)立軟件供應(yīng)商、增值經(jīng)銷商以及其他開發(fā)人員了解全新的 Office SharePoint Server 2007 企業(yè)應(yīng)用程序和平臺(tái)2015-03-25亮劍.NET:SharePoint Server 2007開發(fā)實(shí)戰(zhàn) (張建義,王俞) pdf掃描版
本書共分為8章,詳細(xì)講解了sharepoint上常見的開發(fā)任務(wù),講述了各種開發(fā)場(chǎng)景下需要了解的知識(shí),并提供了豐富的實(shí)例2013-10-27