About Me

Having 12 years experience in Microsoft technologies.Since more than 7 years working in SharePoint technologies. Expert in providing consultation for SharePoint projects. Hands on with development and administration.
Showing posts with label modified by feild. Show all posts
Showing posts with label modified by feild. Show all posts

Wednesday, 11 December 2013

Programatically update MODIFIED BY feild in SharePoint 2007/2010/2013 list

Brief Issue:

When we are trying to insert/update an item by using SPSecurity.RunWithElevatedPrivileges(delegate(){});” for getting the Administrator privilege we see that the value of "Modified By" feild of that inserted /updated item is SYSTEM ACCOUNT instead of the orginal user who has actually done the modification .
In this case, we need to update the "Modified By" field in the time of inserting/updating. It may not work if we assign a value for the "Modified By" field and call the Update method.
 
Resolution:
 
Use "UpdateOverwriteVersion()" method. This method allows for the setting of properties on a SPListItem object without creating a separate version of the item. This method also allows for setting of certain system properties such as Created(date), Modified(date), Author(Created By) and Editor(Modifies By).
 
Code snippet:
 
using (SPSite oSite = new SPSite(SPContext.Current.Web.Url))

 {
   using (SPWeb oWeb = oSite.OpenWeb())
   {
      //Variable to store the user
      SPUser oUser = oWeb.CurrentUser;
      oWeb.AllowUnsafeUpdates = true;

      SPFieldUserValue userVal = new SPFieldUserValue(oWeb, oUser.ID, oUser.LoginName);

      SPList oList = oWeb.Lists["ListName"];
      SPListItem oItem = oList.GetItemById(Item Id);

      oItem["Modified By"] = userVal;
    

      oItem.UpdateOverwriteVersion();

      oWeb.AllowUnsafeUpdates = false;
   }
}