无法在ItemAdded事件接收器中添加新项目列表

时间:2011-07-28 13:15:36

标签: sharepoint sharepoint-2010 sharepoint-2007

有人可以告诉我为什么这段代码不起作用? “添加代码”本身有效,但遗憾的是不在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 个答案:

答案 0 :(得分:3)

  1. 您是否已采取任何措施将事件接收器附加到列表中?

    如果不是,您可以安装一个功能来管理事件接收器和 验证是否添加了事件接收器,如果没有,请手动添加: http://chrissyblanco.blogspot.com/2007/08/event-receiver-management.html

  2. 也许异常被抛出了?例如,如果是这样的网站或列表 如果没有这样的名称,将抛出异常。如果你 不要初始化项目的必填字段,即Update()调用 将抛出异常。
  3. 顺便说一句,properties变量包含许多有用的属性:

    SPListItem newitem = properties.List.Items.Add();
    newitem["Title"] = "Example";
    newitem.Update();
    

答案 1 :(得分:0)

您使用的是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);        
    }
}

答案 2 :(得分:0)

附加调试器。 转到cmd并键入iisapp。您将获得工作进程ID。 然后打开事件处理程序项目并转到工具并附加进程并在ItemAdded和ItemAddding事件上设置调试点

答案 3 :(得分:0)

尝试以下解决方案:

  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;