0

イベント レシーバーを 1 つのリスト (Web スコープ) にアタッチしています。しかし、ER は Web 内のすべてのリストに対して実行されます。この質問は、ER が展開されている機能が Web スコープである必要があることを示しています。これが事実です。

機能は、TLS のリストの ER にバインドされたプログラムでアクティブ化されます。

newProjectWeb.Features.Add(new Guid("57e21870-6285-4e0a-b9a0-067f774492ae"));

以下の私のコードを見てください。更新プログラムなどを見逃していますか?

事前にご協力いただきありがとうございます。

public void AddEventReceiverToMemberList()
    {
        try
        {
            _clsLists.AddEventReceiverToList(Web, ProjectMemberList.LIST_INTERNAL_NAME, typeof(SCMUProjectMemberList), SPEventReceiverType.ItemAdded);
            _clsLists.AddEventReceiverToList(Web, ProjectMemberList.LIST_INTERNAL_NAME, typeof(SCMUProjectMemberList), SPEventReceiverType.ItemDeleting);
            _clsLists.AddEventReceiverToList(Web, ProjectMemberList.LIST_INTERNAL_NAME, typeof(SCMUProjectMemberList), SPEventReceiverType.ItemUpdated);

            Web.Update();
        }
        catch (Exception)
        {
            throw;
        }
    }

public void AddEventReceiverToList(SPWeb web, string listName, Type eventReceiverClass, SPEventReceiverType eventType)
    {
        SPList list = this.GetListByName(web, listName);            

        string className = eventReceiverClass.FullName;
        string assemblyName = Assembly.GetAssembly(eventReceiverClass).FullName;

        list.EventReceivers.Add(eventType, assemblyName, className);
    }
4

2 に答える 2

0

Elements.xml ファイルで、次のように置き換えます。

<Receivers ListTemplateId="100">

<Receivers ListUrl="Lists/Your List Name">

于 2014-05-21T06:12:48.567 に答える
0

単一のリストに対してイベント レシーバーを実行する場合..

ここを参照

投稿の最後を確認し、Elements.xml で属性を「ListTemplateId」から「ListURL」に変更します。

于 2012-09-04T08:15:03.140 に答える