Pergunta

I have the following code inside my RER:-

foreach (ListItem currentFilingSystemItem in collListItem)
    {
Folder folder = context.Web.GetFolderByServerRelativeUrl(context.Web.ServerRelativeUrl + "/library3/" + currentFilingSystemItem["DealName"].ToString());
context.Load(folder);
context.ExecuteQuery(); 
folder.MoveTo(context.Web.ServerRelativeUrl + "/ArchDocs/" + currentFilingSystemItem["DealName"].ToString());
folder.Update();

context.Load(folder);
context.Load(folder.Files);
context.Load(folder.Folders);
FileCollection files = folder.Files;
FolderCollection folders = folder.Folders;
context.ExecuteQuery();
foreach (File f in files)
  {
     ListItem item = f.ListItemAllFields;
     context.Load(item);
     context.ExecuteQuery();
     item["DealStage"] = currentFilingSystemItem["DealStage"];
     item.Update();
     context.ExecuteQuery();

  }
foreach (Folder fo in folders)
  {

      ListItem item = fo.ListItemAllFields;
      context.Load(item);
      context.ExecuteQuery();
      item["DealStage"] = currentFilingSystemItem["DealStage"];
      item.Update();
      context.ExecuteQuery();

  }

where i am trying to change a managed metadata column named "DealStage" using this item["DealStage"] = currentFilingSystemItem["DealStage"]; for both File and Folders, but my above code will not raise any exception, but the DealStage will not get update! can anyone advice on this please? Thanks

Foi útil?

Solução

As I mentioned in response to your other posted question, you should use [TaxonomyFieldValue][1] (for single-value managed metadata columns) and [TaxonomyFieldValueCollection][2] (for multi-value managed metadata columns). In most cases, setting a taxonomy field to a raw guid will not update the value correctly. Also note the use of the SetFieldValueByValue method on the actual Field object, rather than simply setting the field equal to a value. Taxonomy fields are considerably more difficult to code updates for than scalar value fields are.

Give this a try:

foreach (ListItem currentFilingSystemItem in collListItem)
{
    Folder folder = context.Web.GetFolderByServerRelativeUrl(context.Web.ServerRelativeUrl + "/library3/" + currentFilingSystemItem["DealName"].ToString());
    context.Load(folder);
    context.ExecuteQuery(); 
    folder.MoveTo(context.Web.ServerRelativeUrl + "/ArchDocs/" + currentFilingSystemItem["DealName"].ToString());
    folder.Update();

    context.Load(folder);
    FileCollection files = folder.Files;
    FolderCollection folders = folder.Folders;

    context.Load(files, fs => fs.Include(f => f.ListItemAllFields));
    context.Load(folders, fs => fs.Include(f => f.ListItemAllFields));
    context.ExecuteQuery();

    var dealStageField = list.Fields.GetByInternalNameOrTitle("DealStage");
    context.Load(dealStageField);
    context.ExecuteQuery();

    var dealStageTaxField = context.CastTo<TaxonomyField>(field);
    var dealStageTermValue = currentFilingSystemItem["DealStage"] as TaxonomyFieldValue;

    foreach (File f in files)
    {
        ListItem item = f.ListItemAllFields;
        dealStageTaxField.SetFieldValueByValue(item, dealStageTermValue);
        item.Update();
        context.ExecuteQuery();
    }
    foreach (Folder fo in folders)
    {
        ListItem item = fo.ListItemAllFields;
        dealStageTaxField.SetFieldValueByValue(item, dealStageTermValue);
        item.Update();
        context.ExecuteQuery();
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top