В данной статье вы узнаете, как создать приемник событий для Sharepoint 2010 с помощью Visual Studio. Также Вы узнаете как записать в поле списка произвольный параметр.
Рассмотрим на примере создания обработчика события для списка. В нашем случае создадим новый проект, язык программирования C#.
Первым делом необходимо открыть Visual Studio и выбрать создать новый проект (Ctrl+Shift+N).
Далее выбираем шаблоны "Sharepoint->Приемник событий". Вводим имя проекта, можно оставить по умолчанию EventReceiverProject1. Жмем "ОК".
Указываем локальный сайт для отладки (можно http://localhost), выбираем как развернуть решение: изолированное или решение фермы. Изолированное решение устанавливается для каждого узла и может быть установлено пользователем с соответствующими правами, решение фермы устанавливается для всех узлов фермы и непосредственно администратором. Выберем изолированное решение.
Отметим события: Добавляется элемент (Item adding) и Обновляется элемент. Есть еще события: Добавлен элемент и Обновлен элемент. В первом случае события еще не добавлены в список и соответственно в базу данных, т.е. можно провести предварительную обработку с этими данными. Во втором случае (элемент добавлен и обновлен) данные уже добавлены в список - пост обработка. Тип приемника событий: "события элемента списка". Элемент, который будет источником событий: "настраиваемый список". Жмем "ОК".
MVS создаст проект, класс и две функции для перехвата событий - ItemAdding и ItemUpdating. Фактически наш обработчик готов. Можно компилировать проект. Этот обработчик будет перехватывать события добавления и изменения, только у источников типа "настраиваемый список" (для всех списков, которые присутствуют на узле, поэтому будьте внимательны).
Теперь добавим в поле списка свою запись. Наш настраиваемый список, который присутствует на сервере Sharepoint, содержит поля: ИД, Название, Сообщение, LoginName и называется "Простое обращение". Тип соответственно - "настраиваемый список". Задачей этого списка является прием, обработка и отображение сообщений от пользователей корпоративного портала. Мы же при отправке сообщения будем дописывать в поле LoginName, данные об учетной записи пользователя. Можно выбрать любое другое поле или информацию.
Хочу заметить, что информация с данными полученными из формы ввода, по нажатию кнопки "отправить", в случае пред обработки хранится в properties.AfterProperties, а не в properties.ListItems, здесь ее можно получить в пост событиях обработки, к примеру, Добавлен элемент (Element added). Имя списка доступно в properties.List.Title, учетная запись пользователя может быть получена из properties.UserLoginName.
В итоге код обработки примет вид:
/// <summary>
/// Добавляется элемент.
/// </summary>
public override void ItemAdding(SPItemEventProperties properties)
{
if (properties.List.Title == "Простое обращение")
{
properties.AfterProperties["LoginName"] = properties.UserLoginName.ToString();
};
base.ItemAdding(properties);
}
/// <summary>
/// Обновляется элемент.
/// </summary>
public override void ItemUpdating(SPItemEventProperties properties)
{
if (properties.List.Title == "Простое обращение")
{
properties.AfterProperties["LoginName"] = properties.UserLoginName.ToString();
};
base.ItemUpdating(properties);
}
Данный пример будет добавлять в поле "LoginName" данные учетной записи пользователя, который инициировал обращение (заявку). Более подробную информацию о том как работать с обработчиками событий или Sharepoint ищите на сайте Microsoft (