サイト内のすべてのリストではなく、1 つのリストに対してアクティブにしたい sharepoint イベント ハンドラーがあります。どうすればいいですか?
6 に答える
答えが出ました。おそらくコンソールアプリで、このコードを実行する必要があります。ただし、追加されたイベントハンドラーを削除する方法はまだわかりません...
string siteUrl = Console.ReadLine();
SPSite site = new SPSite(siteUrl);
SPWeb web = site.OpenWeb();
string listName = Console.ReadLine();
SPList list = web.Lists[listName];
string assemblyName = "Issue.EventHandler, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=89fde668234f6b1d";
string className = "Issue.EventHandler.IssueEventHandler";
list.EventReceivers.Add(SPEventReceiverType.ItemUpdated, assemblyName, className);
もう1つの方法は、「SharePointイベントマネージャー」です。
イベントマネージャーはSharePointの機能であり、管理者はブラウザーを使用してサイトのリストとドキュメントライブラリに添付されたイベントを直接管理できます。
このシンプルな機能により、リスト設定メニューの新しい項目を通じて、リストおよびドキュメントライブラリのイベントを管理できます。
イベントを表示、追加、削除したり、アセンブリ名から自動的に興味深いクラスやイベントを見つけたりすることもできます。
この機能はここからダウンロードして、「stsadm -oaddsolution-filenameGatWeb.SharePoint.EventsManager.wsp」を使用してインストールできます。
この機能はフランス語と英語にローカライズされています。
私は最近、Sharepoint SIG でまさにこの問題について講演しました。スライドとツールはこちらから入手できます。あなたはできる
- これを行うためのコンソール アプリを作成する
- コンソール アプリのコードを使用して適切なリストにデプロイする機能を作成する
- PowerShell を使用する
- Brian Wilson の管理ツールを使用する
そのリストだけですか、それとも各サイトのそのリストですか? イベントが発生したときに実行されるコードをテストしており、リストごとにイベント ハンドラーを追加または削除できる u2uの便利な小さなツールを使用しました。
この MSDN の記事は優れた入門書です。
次のコードを使用して、イベント ハンドラーを削除できます。
for (int i = 0; i < olist.EventReceivers.Count; i++) {
olist.EventReceivers[i].Delete();
}
以前に投稿した u2u のツールに付属するコードを見てください。これは、イベント ハンドラーを操作するときに便利なツールです。