WebMovedイベント で正常に起動しているSPWebEventReceiverを使用して特定のSPWebをリッスンしてい ます。Webが移動したら、新しい場所/タイトルでリストを更新します。
私がやりたいのは、Webの名前が変更されたときにリッスンすることです。これを行うには、アイテムリスナーをアタッチし、ItemUpdatedイベントを待ちますか?もしそうなら、私はコードの小さなスニペットをいただければ幸いです!ありがとう!
WebMovedイベント で正常に起動しているSPWebEventReceiverを使用して特定のSPWebをリッスンしてい ます。Webが移動したら、新しい場所/タイトルでリストを更新します。
私がやりたいのは、Webの名前が変更されたときにリッスンすることです。これを行うには、アイテムリスナーをアタッチし、ItemUpdatedイベントを待ちますか?もしそうなら、私はコードの小さなスニペットをいただければ幸いです!ありがとう!
これはSharePointOMのバグのようです。イベントレシーバーは、Webの名前が変更されたときに起動するはずですが、起動しません。WebのURLが変更された場合にのみ起動します。
スティーブ、私が見る限り、SPWebEventReceiverはSPWebで次のイベントのみを公開します(http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebeventreceiver_members.aspx)
ItemAddedは、SPListItemオブジェクトに適用可能なSPItemEventReceiverで定義されます。
SPWebのTitleプロパティは、プロパティバッグ(http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.properties.aspx)に格納されます。
Titleが更新されたときなど、プロパティバッグで.Update()が呼び出されたときに、イベントを利用できるようには見えません。
質問: 利用したい変更は何ですか? たとえば、メタデータは内部のリストに格納できるため、多くのイベントがサポートされます。
これはバグではないと思います。単にドキュメントの解釈が間違っているだけだと思います。あなたが述べたように、ドキュメントは、 WebMoving および WebMoved イベントが、変更または名前変更されたサイトの URL によってトリガーされることを示しています。
MSDN Docから:「既存の Web サイトの名前が変更されるか、別の親オブジェクトに移動される前に発生する Synchronous Before イベント。」
ただし、UI で変更されるのはサイトの「名前」ではなく、サイトのタイトルです。SPWeb オブジェクトには、オブジェクト モデルを介してアクセスできる "Name" プロパティがあり、その Name プロパティを更新して SPWeb.Update() を呼び出すと、実際に WebMoved イベントがトリガーされます。問題は、このプロパティがサイトの Web ベースの設定ページで公開されておらず、「タイトル」フィールドのみが公開されており、このフィールドの変更によってイベントがトリガーされないことです。これは少し直感に反し、誤解を招くようにも思えますが、ドキュメントを文字通り読むと、ドキュメントどおりに動作しています。