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;
}
}