I have the following code inside my remote event reciever, to create a new folder, and then populate the folder managed metadata fields with the current item (item that was added) values:-
ListItem listItem = context.Web.GetList(webrelativeurl + "/"+i2["TemplateListUrl"]).AddItem(listItemCreationInformation);
listItem["FolderType"] = currentitem["FolderType"];
listItem["CorpType"] = currentitem["CorpType"];
now the FodlerType
on both the current item and the listitem is a managed metadata column which allow single value only, while the CorpType
allow multiple values. my above code will assign a value for the FolderType
correctly, but will raise this error when updating the CorpType
:-
Microsoft.SharePoint.Client.ClientRequestException
HResult=0x80131500 Message=The object is not associated with an object identity or the object identity is invalid. Source= StackTrace:
any advice?
You need to get a TaxonomyFieldValueCollection
use the SetFieldValueByValueCollection
of the TaxonomyField
object.
var field = item.ParentList.Fields.GetByInternalNameOrTitle("CorpType");
var corpTypeTaxField = context.CastTo<TaxonomyField>(field);
context.Load(item,i=>i[TaxKeywordFieldName]);
var valuesToCopy = corpTypeTaxField.GetFieldValueByValueCollection(currentitem["CorpType"].ToString());
corpTypeTaxField.SetFieldValueByValueCollection(listItem, valuesToCopy);
Note, this gets a lot messier if you have terms that you need to look up to construct a TaxonomyFieldValueCollection
from scratch -- copying it from another item is definitely easier.
User contributions licensed under CC BY-SA 3.0