2011-06-07 9 views
0

itemaddingのリストにイベントレシーバーを追加しようとしています。 EmployeeName people pickerというフィールドがあります。そこから項目を追加し、userprofileからEmployeeNoを自動更新するためにその特定の従業員のuserprofileを取得する必要があります。sharepointオブジェクトモデルitemadding eventreceiver

私は以下のように使用して:この上で私を助けてくださいますが

public override void ItemAdding(SPItemEventProperties properties) 
     { 
      base.ItemAdding(properties); 

      UserProfileManager profileManager = new UserProfileManager(context); 

      UserProfile myProfile = profileManager.GetUserProfile(item["EmployeeName"].ToString()); 



      if (myProfile["EmployeeNo"].Value != null) 
      { 

       properties.AfterProperties["EmployeeNo"] = (myProfile["EmployeeNo"]).ToString(); 

      } 


      item.Update(); 

     } 

を働いていません。

答えて

0

チェックあなたは正しい内部列名を使用している場合。 「アイテム」はどこから手に入りますか?代わりにproperties.ListItemを使用してみてください。 properties.ListItem.update()(またはコード内のitem.update())を呼び出さないでください。

+0

** GetUserProfile(Domain \ Username)**を持っている必要があります** ** EmployeeNameとして入力されたフィールドからアカウント名を取得する方法** – jam

+0

"EmployeeName"がフィールドの内部名であれば、properties.ListItem ["EmployeeName"]で従業員名を取得する必要があります。 – elsni

+0

はい私はそれをしました。正しい方法は、アイテムがまだitemaddingイベントに追加されていないEmployeeNameに基づいてuserprofileをフェッチしているときです。 – jam

関連する問題