用Feature控制列表EventHandle

 
 

sharepoint站點Feature的定製與開發中講了Feature,在sharepoint列表EventHandle的開發中講了Event(簡稱)(,但這兩者之間能不能建立起關係呢?答案是肯定的。下面我就介紹個例子,用站點的Feature來控制列表Event事件的工作。在開始做例子之前呢,還是先講一下大概效果:當激活Feature時,列表的Event開始工作,當列表新增一個文檔項時,同時會向數據庫表中加入相關數據記錄。當Feature被停止時,Event也停止工作,這時新建文檔時,不會再向數據庫表中加入數據記錄。
做這個例子呢,會延用前面介紹的兩個例子:
sharepoint站點Feature的定製與開發sharepoint列表EventHandle的開發中的一些步驟(如不清楚,請先看這兩篇應用,再往下看),好進一步加深對前面例子的裏解。當然也要合理的利用資源嘛,這樣才能達到功能的擴展。呵呵,迴歸正題,趕緊進入DEMO:
第一步:
開發部署上Event。這裏就按照sharepoint列表EventHandle的開發中的第一、第二步進行。先建數據庫表,再用VS創建類庫項目,項目名稱爲“EventHandle”(參照例子)。完成Event開發。
第二步:
開發部署Feature。這裏也是延用sharepoint站點Feature的定製與開發中的工程項目“FeatureToRunCode”,但MyCode.cs的代碼將被修改爲:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

namespace FeatureToRunCode
{
    public class MyCode:SPFeatureReceiver
    {

        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {//當激活Feature時,起用報銷單庫的增刪改事件


            SPWeb web = (SPWeb)properties.Feature.Parent;
            web.AllowUnsafeUpdates = true;
            SPList list = web.Lists["報銷單"];
            string asmName = "EventHandle, Version=1.0.0.0, Culture=neutral, PublicKeyToken=01dc07d3d1e20903";
            string className = "EventHandle.listEventHandle";

            //這是調用列表增刪改事件的方法
            list.EventReceivers.Add(SPEventReceiverType.ItemAdded, asmName, className);
            list.EventReceivers.Add(SPEventReceiverType.ItemUpdated, asmName, className);
            list.EventReceivers.Add(SPEventReceiverType.ItemDeleting, asmName, className);
            web.Close();
        }
        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            //當停止Feature時,取消Feature事件
            SPWeb web = (SPWeb)properties.Feature.Parent;
            web.AllowUnsafeUpdates = true;
            SPList list = web.Lists["報銷單"];
            for (int i = list.EventReceivers.Count-1; i >=0; i--)
            {
                 //這是清除列表增刪改事件的方法

                list.EventReceivers[i].Delete();
              
            }

              web.Close();
        }
        public override void FeatureInstalled(SPFeatureReceiverProperties properties)
        {

        }
        public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
        {

        }

    }
}

保存,重新生成項目。將重新生成的FeatureToRunCode.dll重新拖到C:/WINDOWS/assembly目錄下,重啓一下IIS。
這樣就完成開發了。
第三步:
當然也是我們最關心的事了,就是查看效果了。首先呢,當然是先打開數據庫表了,但看一下當前表中是什麼數據,如圖:

接着,進入網站設置---->網站功能---->找到“FeatureToRunCode”這個Feature,先將Feature設爲停止狀態,向報銷單庫里加入一條數據,看Event是否工作,如果數據庫表裏沒有加入數據記錄爲成功(當然如果程序有錯也不會成功,這可不算在內啊,呵呵)。當激活Feature時,向報銷單庫里加入一項表單數據(petpet費用報銷單)時,如圖:


數據庫表中的記錄也會相應的增加,如圖:

這樣,用Feature控制Event的功能就已經完成了。以後對Event的控制就方便了,不再需要用控制檯之類的程序來代勞了,還能遠程控制呢,真方便。有沒有一種心動的感覺呢,那就快動手了......

發佈了19 篇原創文章 · 獲贊 1 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章