SharePoint 2010项目更新事件

SharePoint 2010项目更新事件,sharepoint,sharepoint-2010,Sharepoint,Sharepoint 2010,我正在尝试创建一个ItemUpdate事件,检查两个列表中的一些潜在问题。但是,item事件似乎根本没有触发,甚至调试对ItemUpdate的调用。。不起作用,就好像从未调用该方法一样 事件代码: namespace MyEvent.EventReceiver1 { public class EventReceiver1 : SPItemEventReceiver { public override void ItemUpdating(SPItemEventProp

我正在尝试创建一个ItemUpdate事件,检查两个列表中的一些潜在问题。但是,item事件似乎根本没有触发,甚至调试对ItemUpdate的调用。。不起作用,就好像从未调用该方法一样

事件代码:

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";
               }
           }
       }
    }
}
如果我调试public override void ItemUpdating,则在更新列表时不会触发它——不管它是否是我的列表。因此,即使我的列表更新了一个项目,我的检查也不会运行

My 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>

请注意,这个事件接收器实际上要复杂得多。。它通过一些相当深入的功能触发几个不同的事件。除上述项目更新和项目删除方法外,该功能中的其他所有方法都可以正常工作。

您的“我的列表”是使用现成的自定义列表创建的吗?当Receivers元素定义为ListTemplateId=100时,事件接收器将只处理这些类型的列表。要测试事件接收器,请尝试创建新的自定义列表,并检查更新项目时是否触发事件

如果此事件接收器仅用于一个特定列表,则可以将元素定义更改为:

<?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>

您能否检查部署的elements.xml并确保$SharePoint.Project.AssemblyFullName$实际显示了您的程序集?您可以使用并检查,它是否正确部署在SP中