首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当尝试使用C# CSOM获取Sharepoint Online页面上的所有get部件时,我得到0返回(而我的页面上有*个get部件)

当尝试使用C# CSOM获取Sharepoint Online页面上的所有get部件时,我得到0返回(而我的页面上有*个get部件)
EN

Stack Overflow用户
提问于 2018-07-06 20:07:20
回答 2查看 1.7K关注 0票数 0

所以我使用C# CSOM代码来尝试获取所有的get部件,这样我就可以删除一个。我的Sharepoint在线页面只是一个标准的现代团队网站页面,没有任何变化。我想得到所有的网页部件,然后删除快速链接标准的网页部件使用。下面是我的代码:

代码语言:javascript
复制
            Microsoft.SharePoint.Client.File oFile = 
                Context.Web.GetFileByServerRelativeUrl("/sites/CR-WST-GYM-20130306/SitePages/Home.aspx");
            LimitedWebPartManager wpManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);
            /*Context.Load(wpManager.WebParts,
                wps => wps.Include(
                wp => wp.WebPart.Title));*/
            Context.Load(wpManager);
            Context.ExecuteQueryRetry();

            WebPartDefinitionCollection wpDefinitionCollection = wpManager.WebParts;
            Context.Load(wpDefinitionCollection);
            Context.ExecuteQueryRetry();  

它会加载,但wpManager.WebParts包含0个值,计数为0...当已经有标准的when部件添加到新创建的团队站点时,这怎么可能呢?我是不是应该至少买几个?我可能做错了什么?

这段代码取自:https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee539301(v%3Doffice.14)

编辑:我还通过UI添加了一个新的new部件到我的主页,看看我是否得到了"1“作为值,但它仍然是0……

EN

回答 2

Stack Overflow用户

发布于 2018-07-06 22:59:44

对于"modern“站点页面,引入了OfficeDevPnP.Core.Pages namespace来管理web部件,而不是Microsoft.SharePoint.Client.WebParts namespace

下面的示例演示如何检索页面上的客户端web部件列表

代码语言:javascript
复制
using (var ctx = new ClientContext(webUrl))
{
      ctx.Credentials = GetCredentials(userName, password);

      var page = OfficeDevPnP.Core.Pages.ClientSidePage.Load(ctx, "Home.aspx");
      var webParts = page.Controls.Where(c => c.Type.Name == "ClientSideWebPart").ToList();
}

前提条件

SharePointPnPCoreOnline package

参考

Customizing "modern" site pages

票数 0
EN

Stack Overflow用户

发布于 2020-09-26 01:34:26

不需要PnP。这对我很有效。

代码语言:javascript
复制
CamlQuery allPagesQuery = new CamlQuery();
ListItemCollection pageItems = list.GetItems(allPagesQuery);
ctx.Load(pageItems, pi => pi.Include(i => i.Id, i => i.DisplayName));
ctx.ExecuteQuery();

foreach (var item in pageItems)
{
   ctx.Load(item, i => i.File, i => i.File.ServerRelativeUrl);
   ctx.ExecuteQuery();
   LimitedWebPartManager wpManager = 
      item.File.GetLimitedWebPartManager(PersonalizationScope.Shared);
   ctx.Load(wpManager, wpm => wpm.WebParts.Include(wp => wp.WebPart.Title, wp => wp.Id));
   ctx.ExecuteQuery();
   foreach (WebPartDefinition wp in wpManager.WebParts)
   {
       log4.DebugFormat("Webpart in {0}: {1} [{2}]",
       item.File.ServerRelativeUrl, wp.WebPart.Title, wp.Id);
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51210146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档