更新查询项lookup value in list using CSOM

public void UpdateLookup(string siteUrl, int id, string lookupColumnName,
List multiLookupValues, string listName, string lookupListName)
{
    using (ClientContext ctx = new ClientContext(siteUrl))
    {
        ctx.Credentials = new NetworkCredential(_username, _password, _domain);
        var list = ctx.Web.Lists.GetByTitle(listName);
        var item = list.GetItemById(id);
        var lookUpList = ctx.Web.Lists.GetByTitle(lookupListName);
        CamlQuery query = new CamlQuery();
        query.ViewXml = CreateCaml(multiLookupValues);
        var items = lookUpList.GetItems(query);
        ctx.Load(item, i => i[lookupColumnName]);
        ctx.Load(items);
        ctx.ExecuteQuery();
        var lookupValues = new ArrayList();
        FieldLookupValue[] values = item[lookupColumnName] as FieldLookupValue[];
        foreach (ListItem listItem in items)
        {
            var lookupValue = new FieldLookupValue { LookupId = listItem.Id };
            lookupValues.Add(lookupValue);
        }
        item.ParseAndSetFieldValue(lookupColumnName, null);
        item.Update();
        item[lookupColumnName] = lookupValues.ToArray();
        item.Update();
        ctx.ExecuteQuery();
    }
}


public void UpdateLookup( string siteUrl, int id, string lookupColumnName,
List multiLookupValues, string listName, string lookupListName)
{
     using (ClientContext ctx = new ClientContext(siteUrl))
     {
         ctx.Credentials = new NetworkCredential(_username, _password, _domain);
         var list = ctx.Web.Lists.GetByTitle(listName);
         var item = list.GetItemById(id);
         var lookUpList = ctx.Web.Lists.GetByTitle(lookupListName);
         CamlQuery query = new CamlQuery();
         query.ViewXml = CreateCaml(multiLookupValues);
         var items = lookUpList.GetItems(query);
         ctx.Load(item, i => i[lookupColumnName]);
         ctx.Load(items);
         ctx.ExecuteQuery();
         var lookupValues = new ArrayList();
         FieldLookupValue[] values = item[lookupColumnName] as FieldLookupValue[];
         foreach (ListItem listItem in items)
         {
             var lookupValue = new FieldLookupValue { LookupId = listItem.Id };
             lookupValues.Add(lookupValue);
         }
         item.ParseAndSetFieldValue(lookupColumnName, null );
         item.Update();
         item[lookupColumnName] = lookupValues.ToArray();
         item.Update();
         ctx.ExecuteQuery();
     }
}
private string CreateCaml(List multiLookupValues)
{
     if (multiLookupValues.Count == 1)
     {
         return string .Format( @"
 
                 {0}
 
           " , multiLookupValues[0]);
     }
     StringBuilder sb = new StringBuilder();
     sb.Append( @"
 
                             " );
 
     foreach ( string multiLookupValue in multiLookupValues)
     {
         sb.Append( string .Format( @"
 
                  {0}
                   " , multiLookupValue));
     }
     sb.Append( @"
 
                  " );
     return sb.ToString();
}

猜你喜欢

转载自www.cnblogs.com/xdanny/p/12395739.html