Updating 'ModerationStatus' field
You might have experienced a road block when trying to the update the ‘ModerationStatus’ field with other fields. Any attempt to do so will result in an exception “You cannot change moderation status and set other item properties at that same time”. This is an expected behavior since the document deals with stream, promotion and demotion and for non document libraries we are not touching the streams, so it allows updating other fields with “ModerationStatus”.
Here is the code: In this sample code, we are trying to update the 'Editor' field along with the 'ModerationStatus’.
1: SPSite oSite = new SPSite("https://localhost:100/sites/Internetsite/");
2: SPWeb oWeb = oSite.OpenWeb();
3: SPList oList = oWeb.Lists["Shared Documents"];
4: SPListItem oListItem = oList.Items[0];
5: SPUser oUser = oWeb.AllUsers[@"domain\user123"];
6: SPFieldUserValue oUserValue = new SPFieldUserValue(oWeb, oUser.ID, oUser.LoginName);
7: oListItem["Editor"] = oUserValue;
8: oListItem.ModerationInformation.Status = SPModerationStatusType.Approved;
9: oListItem.Update();
Note: This behaviour is only with libraries of type document libraries(SPBaseType.DocumentLibrary).
Good Luck!!!
Comments
Anonymous
October 13, 2010
Is there any way to change the Editor field along with Moderation Status in Document Library? If so can you please share with me..Anonymous
January 26, 2016
Thanks for the solution .. it worked for me.