Событие обновления элемента SharePoint 2010 - PullRequest
0 голосов
/ 11 октября 2011

Я пытаюсь создать событие ItemUpdating, которое проверяет некоторые потенциальные проблемы в нескольких списках.Однако, похоже, что событие элемента вообще не запускается, даже отладка вызова ItemUpdating (..) не работает, как если бы метод никогда не вызывался.

Код события:

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 ()", он никогда не срабатывает при обновлении списка, скорее это "Мой список" или нет.Поэтому моя проверка никогда не запускается, даже если «Мой список» обновляет элемент.

Мои 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.

1 Ответ

0 голосов
/ 12 октября 2011

Был ли ваш "Мой список" создан с использованием нестандартного пользовательского списка? Получатель событий будет обрабатывать эти типы списков, только если ваш элемент 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...