【问题标题】:How to change the content type of list items如何更改列表项的内容类型
【发布时间】:2021-04-15 19:17:13
【问题描述】:

我正在尝试更改文档库中所有根文件夹的内容类型。我什至不确定这是否可能。当我运行下面的代码时,我收到 ListItem.ContentType 被写保护的消息...

我的问题是,是否可以更改内容类型? 如果是,我该如何使用 CSOM?

谢谢

                ContentType ct = list.ContentTypes.GetById("0x0120D520008AE499F0AEB1C647B9D6F0C9D3B7F9F100B56E2AEF9C715540BE5E87A04F54476E");
                context.ExecuteQuery();

                foreach (ListItem item in items)
                {
                    context.Load(item, i => i.DisplayName);
                    context.Load(item, i => i.ContentType);
                    context.Load(ct, i => i.Id);
                    context.ExecuteQuery();

                    if (item.ContentType.Name == "Folder")
                    {
                        Console.WriteLine("Name: " + item.DisplayName + " ContentType:" + item.ContentType.Name);
                        if (item.ContentType.Sealed = true)
                        {
                            item.ContentType.Sealed = false;
                            item.Update();
                            context.ExecuteQuery();

                        }

                        item.ContentType = ct.Id;
                        item.Update();
                        context.ExecuteQuery();
                    }
                }

【问题讨论】:

    标签: sharepoint-online csom


    【解决方案1】:

    像这样更新项目内容类型,设置 ContentTypeId 字段值:

                    List list = ctx.Web.Lists.GetByTitle("doc2");
    
                    ContentType ct = list.ContentTypes.GetById("0x0120001D61DFC51D574148B41D5DEB19779D19000C2B25DED7B1C34BB491C5BE59765450");
                    ctx.Load(ct);
                    ctx.ExecuteQuery();
                    CamlQuery caml = new CamlQuery();
                    ListItemCollection items = list.GetItems(caml);
                    ctx.Load(items);
                    ctx.ExecuteQuery();
                    foreach (ListItem item in items)
                    {
                        ctx.Load(item, i => i.DisplayName);
                        ctx.Load(item, i => i.ContentType);
                        ctx.Load(ct, i => i.Id);
                        ctx.ExecuteQuery();
    
                        if (item.ContentType.Name == "Folder")
                        {
                            item["ContentTypeId"] = ct.Id.ToString();
                            item.Update();
                            ctx.ExecuteQuery();
                        }
                    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-22
      • 2018-08-30
      • 2015-08-02
      • 2018-05-20
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      相关资源
      最近更新 更多