Учебники

SharePoint — Функция \ Приемник событий

В этой главе мы научимся добавлять дескриптор кода . Дескрипторы кода — это события, которые возникают, когда функция активирована или деактивирована. Другими словами, мы будем изучать функциональные приемники .

Проект Visual Studio, который мы создали в последней главе, имел одну функцию, и когда он был активирован, он предоставил наш список контактов, нашу страницу SitePage и ссылку на страницу SitePage.

Однако, когда компонент отключен, SharePoint удаляет только ссылку, а SitePage и список контактов остаются.

Мы можем написать код, когда функция отключена, чтобы удалить список и страницу, если мы хотим. В этой главе мы узнаем, как удалять контент и элементы, когда функция отключена.

Для обработки событий для функции нам нужен приемник функций .

Шаг 1. Чтобы получить получатель компонента, щелкните правой кнопкой мыши элемент в обозревателе решений и выберите « Добавить приемник событий» .

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;

namespace FeaturesAndElements.Features.Sample {
   /// <summary>
      /// This class handles events raised during feature activation, deactivation,
         installation, uninstallation, and upgrade.
   /// </summary>
   /// <remarks>
      /// The GUID attached to this class may be used during packaging and should not be modified.
   /// </remarks>
   [Guid("e873932c-d514-46f9-9d17-320bd3fbcb86")]
  
   public class SampleEventReceiver : SPFeatureReceiver {
      // Uncomment the method below to handle the event raised after a feature has been activated.
      //public override void FeatureActivated(SPFeatureReceiverProperties properties)//{
         //
      }
      // Uncomment the method below to handle the event raised before a feature is deactivated.
      //public override void FeatureDeactivating(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised after a feature has been installed.
      //public override void FeatureInstalled(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised before a feature is uninstalled.
      //public override void FeatureUninstalling(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised when a feature is upgrading.
      //public override void FeatureUpgrading(SPFeatureReceiverProperties
         properties, string upgradeActionName,
         System.Collections.Generic.IDictionary<string, string> parameters) // {
         //
      }
   }
}

Вы можете видеть, что мы получаем класс, унаследованный от SPFeatureReceiver .

В SharePoint существуют разные классы для разных видов событий, которые вы можете обрабатывать. Например, события в списках, события в элементах списка, события на сайтах. Вы можете создать класс, производный от конкретного получателя событий, а затем переопределить методы внутри этого класса для обработки событий.

События функции используются, когда она используется:

  • активированная
  • дезактивированный
  • Установлены
  • Ый
  • модернизация

Затем вам нужно присоединить этот класс в качестве обработчика событий для определенного элемента. Например, если есть обработчик событий, который обрабатывает события списка, вам нужно присоединить этот класс к списку.

Поэтому мы будем обрабатывать две особенности —

  • Когда функция активирована и

  • Когда это деактивируется.

Когда функция активирована и

Когда это деактивируется.

Шаг 2. Мы реализуем методы FeatureActivation и FeatureDeactivation, как показано ниже.

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;

namespace FeaturesAndElements.Features.Sample {
   /// <summary>
      /// This class handles events raised during feature activation, deactivation,
         installation, uninstallation, and upgrade.
   /// </summary>
   /// <remarks>
      /// The GUID attached to this class may be used during packaging and should
         not be modified.
   /// </remarks>

   [Guid("e873932c-d514-46f9-9d17-320bd3fbcb86")]
   public class SampleEventReceiver : SPFeatureReceiver {
      private const string listName = "Announcements";
      
      public override void FeatureActivated(SPFeatureReceiverProperties properties) {
         var web = properties.Feature.Parent as SPWeb;
         
         if (web == null) return;
         var list = web.Lists.TryGetList(listName);
         
         if (list != null) return;
         var listId = web.Lists.Add(listName, string.Empty,
         SPListTemplateType.Announcements);
         list = web.Lists[listId];
         list.OnQuickLaunch = true;
         list.Update();
      }
      public override void FeatureDeactivating(SPFeatureReceiverProperties properties) {
         var web = properties.Feature.Parent as SPWeb;
         
         if (web == null) return;
         var list = web.Lists.TryGetList(listName);
         
         if (list == null) return;
         if (list.ItemCount == 0) {
            list.Delete();
         }
      }
   }
}

Примечание

  • Когда функция будет активирована, мы создадим список объявлений.

  • Когда функция отключена, мы проверим, пуст ли список объявлений и, если он есть, мы удалим его.

Когда функция будет активирована, мы создадим список объявлений.

Когда функция отключена, мы проверим, пуст ли список объявлений и, если он есть, мы удалим его.

Шаг 3 — Теперь щелкните правой кнопкой мыши на Project и выберите deploy. Вы увидите следующее предупреждение о конфликте развертывания.

Конфликты развертывания

Visual Studio сообщает нам, что мы пытаемся создать список под названием «Контакты», но на сайте уже есть список «Контакты». Он спрашивает нас, хотим ли мы перезаписать существующий список, и в этом случае нажмите « Разрешить» .

Шаг 4. Вернитесь в SharePoint, а затем обновите свой сайт и выберите Действия сайта → Настройки сайта → Управление функциями сайта → Пример функции .

Пример Особенности

Вы можете видеть, что на левой панели нет списка объявлений.

Шаг 5. Позвольте нам активировать функцию Sample, и вы увидите список объявлений, но сейчас он пуст.

Список объявлений

Примечание. Если вы отключите функцию Sample Feature, то заметите, что список объявлений исчез.

Шаг 6 — Давайте активировать функцию. Перейдите в Объявления, а затем Добавить новое объявление. Мы назовем этот тест и затем нажмите Сохранить.

Новое объявление

Вы увидите тестовый файл в разделе «Объявления».

Тестовый файл под объявлениями

Теперь, когда вы деактивируете объявления, вы увидите, что список объявлений остается, потому что он не был пустым.