• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
秦大田的院子
博客园    首页    新随笔    联系   管理    订阅  订阅
更新查询项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();
}
posted on 2020-03-02 15:07  秦大田的院子  阅读(171)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3