2011-10-11 19 views
0

私はいくつかの潜在的な問題をいくつかのリストでチェックするItemUpdatingイベントを作成しようとしています。しかし、Itemイベントがまったくトリガされていないようで、ItemUpdating(..)への呼び出しをデバッグしても機能しません。メソッドが呼び出されないかのようです。SharePoint 2010アイテムアップデートイベント

イベントコード:

namespace MyEvent.EventReceiver1 
{ 
    public class EventReceiver1 : SPItemEventReceiver 
    { 
     public override void ItemUpdating(SPItemEventProperties properties) 
     { 

      base.ItemUpdating(properties); 

      // ... my code testing column BeforeProperties vs AfterProperties 
      if (properties.ListTitle == "My List") 
      { 

       if (properties.BeforeProperties["some field"] != properties.AfterProperties["some field"]) 
       { 
        properties.Cancel = true; 
        properties.ErrorMessage = "Please do not alter some field in my list"; 
       } 
      } 
     } 
    } 
} 

私はデバッグする場合は、「パブリックオーバーライドボイドItemUpdating()」リスト - を更新するときには、むしろそれが「マイリスト」かではありません発火することはありません。だから、たとえ "My List"がアイテムを更新しても、私のチェックは決して実行されません。

マイelements.xml:このイベントレシーバはかなりより複雑な現実であることを

<?xml version="1.0" encoding="utf-8"?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <Receivers ListTemplateId="100"> 
     <Receiver> 
     <Name>EventReceiver1ItemUpdating</Name> 
     <Type>ItemUpdating</Type> 
     <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly> 
     <Class>MyEvent.EventReceiver1.EventReceiver1</Class> 
     <SequenceNumber>10000</SequenceNumber> 
     </Receiver> 
    </Receivers> 
</Elements> 

注...それはいくつかのかなりの綿密な機能を持つ複数の異なるイベントに発生させます。上記のItemUpdatingメソッドとItemDeletingメソッドを除いて、このフィーチャーの他のすべてが正常に機能します。

+0

デプロイしelements.xmlをチェックしてください $ SharePoint.Project.AssemblyFullName $ことを確認できますに実際にあなたのアセンブリが示されていますか? –

+0

[http://spm.codeplex.com](http://spm.codeplex.com/)を使用してチェックすることができます.SPに正しくデプロイされていますか – MishaU

答えて

0

「My List」は、既定のカスタムリストを使用して作成されましたか? Receivers要素がListTemplateId="100"と定義されている場合、イベント受信者はこれらの種類のリストのみを処理します。イベントレシーバーをテストするには、新しいカスタムリストを作成し、アイテムの更新時にイベントが発生するかどうかを確認してください。

このイベントの受信機が1つの特定のリストのために意図されている場合は、あなたがあなたの要素の定義を変更することができます:

<?xml version="1.0" encoding="utf-8"?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <Receivers ListUrl="Lists/MyListUrl"> 
     <Receiver> 
     <Name>EventReceiver1ItemUpdating</Name> 
     <Type>ItemUpdating</Type> 
     <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly> 
     <Class>MyEvent.EventReceiver1.EventReceiver1</Class> 
     <SequenceNumber>10000</SequenceNumber> 
     </Receiver> 
    </Receivers> 
</Elements>