2013-12-19 63 views
0

我在我的的SharePoint有一個EventReceiver應用程序在那裏我重寫ItemAddingItemUpdating方法:EventReceiver不能正常工作

public override void ItemAdding(SPItemEventProperties properties) 
{ 
    SPWeb web = properties.OpenWeb(); 

    switch (properties.ListTitle) 
    { 
     //some cases 

     case "Employees": 
      if (properties.AfterProperties["User"] != null) 
      { 
       SPUser user = web.SiteUsers 
       [ 
        properties.AfterProperties["User"].ToString().Substring 
        (
         properties.AfterProperties["User"].ToString().IndexOf(";#") + 2 
        ) 
       ]; 

       properties.AfterProperties["Title"] = user.Name; 
      } 
      break; 
    } 

    base.ItemAdding(properties); 
} 

代碼在這兩種方法是完全一樣的。但有時標題字段在添加項目到列表後仍爲空。如果我更新該項目(沒有任何更改)標題字段正確填寫用戶名。

回答

1

我看到你的代碼的兩個潛在的問題:

  1. 處理properties.AfterProperties [ 「用戶」]通過解析它。最好使用這樣的代碼(SPUserFieldValue)properties.ListItem.Fields [「User」]。GetFieldValue(properties.properties.AfterProperties [「User」]。ToString())。這種方式由MSDN建議。
  2. 使用SiteUsers索引器拋出集合中未找到用戶時的異常。你應該用try ... catch語句來包裝它。當您的網站集中首次使用用戶時,可能會發生這種情況。
+0

謝謝,我會盡量按照你的建議。 – Enam