How to update Created By and Modified By fields in sharepoint list using C#
In this article I will explain, how to update list item in event receiver. In event receiver, I will update Created By /Modified By/Title metadata of list item.
Code:
public override void ItemUpdated(SPItemEventProperties properties) { int userID=0; string userNTID = "WIN\AMITKUMAR"; SPSecurity.RunWithElevatedPrivileges(delegate() { SPListItem CurrentItem = properties.ListItem; CurrentItem.Web.AllowUnsafeUpdates = true; CurrentItem.Web.Site.AllowUnsafeUpdates = true; // In the next statment i am updating CreatedBy(Author) filed with SystemAccount CurrentItem["Author"] = CurrentItem.Web.Site.SystemAccount.ID; //CreatedBy //We can also update CreatedBy(Author)/ModifiedBy(Editor) field with Any user account FindUserIDByNTID(userNTID, CurrentItem.Web.Site, ref userID); if (userID > 0) { CurrentItem["Editor"] = userID; //ModifiedBy } else { CurrentItem["Editor"] = CurrentItem.Web.Site.SystemAccount.ID; //ModifiedBy } CurrentItem["Title"] = "Amit Kumar"; CurrentItem.Update(); CurrentItem.ParentList.Update(); CurrentItem.Web.Update(); CurrentItem.Web.AllowUnsafeUpdates = false; CurrentItem.Web.Site.AllowUnsafeUpdates = false; }); } public static void FindUserIDByNTID(string userNTID, SPSite site, ref int userID) { try { //--Check user NTID is null or not if (!string.IsNullOrEmpty(userNTID)) { //--userNTID is not null //--then fetch ID of the user userID = site.RootWeb.AllUsers[userNTID].ID; } else { //--If userNTID is null userID = 0; } } catch (ArgumentException ex) { userID = 0; } catch (Exception ex) { userID = 0; } }