Невозможно добавить новый элемент в список в ItemAdded Event Receiver - PullRequest
0 голосов
/ 28 июля 2011

Кто-нибудь может сказать мне, почему этот код не работает? Сам «добавляющий код» работает, но, к сожалению, не в событии ItemAdded. Мне нужен этот код в событии ItemAdded, и поэтому я не могу использовать ItemAdding.

Спасибо за любую помощь.

public override void ItemAdded(SPItemEventProperties properties)
    {
        SPSite site = new SPSite("http://air_sim:39167/");
        SPWeb web1 = site.RootWeb;
        SPList List = web1.Lists["Announcements"];
        SPListItem newitem = List.Items.Add();
        newitem["Title"] = "Example";
        newitem.Update();



    }

Ответы [ 4 ]

3 голосов
/ 28 июля 2011
  1. Делали ли вы какие-либо шаги для добавления получателя событий в ваш список?

    Если нет, вы можете установить функцию для управления получателями событий и убедитесь, что получатель события добавлен, а если нет, добавьте его вручную: http://chrissyblanco.blogspot.com/2007/08/event-receiver-management.html

  2. Может быть, исключение выброшено? Например, если такой сайт или список с таким именем не существует, будет выдано исключение. Также если вы не инициализируйте обязательные поля вашего элемента, вызов Update () скинет исключение.

Кстати, переменная properties содержит много полезных свойств:

SPListItem newitem = properties.List.Items.Add();
newitem["Title"] = "Example";
newitem.Update();
0 голосов
/ 21 мая 2014

Попробуйте следующие решения:

  1. Проверьте, существует ли Сайт с таким именем.
  2. Проверьте, есть ли у пользователя разрешение на вставку элемента.
  3. Попробуйте использоватьAllowUnsafeUpdates: SPSite site = new SPSite("site address"); SPWeb web1 = site.RootWeb; SPList List = web1.Lists["Announcements"]; web1.AllowUnsafeUpdates = true; SPListItem newitem = List.Items.Add(); newitem["Title"] = "Example"; newitem.Update(); web1.AllowUnsafeUpdates = false;
0 голосов
/ 01 августа 2011

Присоединить отладчик. Перейдите в cmd и введите iisapp. Вы бы получили идентификатор рабочего процесса. Затем откройте свой проект обработчика событий и перейдите к инструментам и приложите процесс и установите точку отладки для ItemAdded, а также событие ItemAddding

0 голосов
/ 30 июля 2011

Вы используете Sharepoint 2010 или Sharepoint2007? Вы используете VS2008 или VS2010? Если вы не можете использовать отладчик, используйте EventLog :

public override void ItemAdded(SPItemEventProperties properties)
{
    EventLog.WriteEntry("DebugSharepoint", "ItemAdded fired");
    try
    {
        SPSite site = new SPSite("http://air_sim:39167/");
        SPWeb web1 = site.RootWeb;
        SPList List = web1.Lists["Announcements"];
        SPListItem newitem = List.Items.Add();
        newitem["Title"] = "Example";
        newitem.Update();

    }
    catch(Exception e)
    {
        EventLog.WriteEntry("DebugSharepoint", e.Message, EventLogEntryType.Error);        
    }
}
...