2011-07-28 31 views
0

有人可以告訴我爲什麼這段代碼不起作用嗎? 「添加代碼」本身有效,但不幸的是不在ItemAdded事件中。 我需要此代碼在ItemAdded事件中,因此我無法使用ItemAdding。無法添加新項目列表在ItemAdded事件接收器

感謝您的任何幫助。

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(); 



    } 
+0

您能步使用調試器的代碼?它是否給你提供任何錯誤信息,或者這個事件處理程序沒有達到? –

+0

不幸的是我沒有調試事件接收器的經驗。我搜索了互聯網,發現了一些可能性,但我無法重現。我在一個月前嘗試了一個類似的代碼,在那裏我沒有任何問題,因此我不明白這一點。 – Fabian

+0

這就像在SP2010中調試其他代碼一樣。只需在ItemAdded方法上設置一個斷點並在Visual Studio中按F5即可。 –

回答

3
  1. 你做任何行動,事件接收器連接到你的列表?

    如果沒有,你可以安裝一個功能來管理事件接收器和 驗證事件接收器被添加,如果沒有,手動添加: http://chrissyblanco.blogspot.com/2007/08/event-receiver-management.html

  2. 也許會拋出異常somwere?例如,如果這樣的網站或名單 具有這樣的名稱不存在,則會拋出異常。此外,如果您 不初始化您的項目的必填字段,Update()調用 將引發異常。

通過properties變量包含許多有用的特性的方式:

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

你用2010的Sharepoint或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);   
    } 
} 
0

附加一個調試器。 轉到cmd並鍵入iisapp。你會得到工作進程ID。 然後打開你的事件處理程序的項目,並從工具和附加過程,並設置ItemAdded調試點以及ItemAddding事件

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;
相關問題