所以我使用C# CSOM代码来尝试获取所有的get部件,这样我就可以删除一个。我的Sharepoint在线页面只是一个标准的现代团队网站页面,没有任何变化。我想得到所有的网页部件,然后删除快速链接标准的网页部件使用。下面是我的代码:
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部件添加到新创建的团队站点时,这怎么可能呢?我是不是应该至少买几个?我可能做错了什么?
编辑:我还通过UI添加了一个新的new部件到我的主页,看看我是否得到了"1“作为值,但它仍然是0……
发布于 2018-07-06 22:59:44
对于"modern“站点页面,引入了OfficeDevPnP.Core.Pages namespace来管理web部件,而不是Microsoft.SharePoint.Client.WebParts namespace
下面的示例演示如何检索页面上的客户端web部件列表
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
参考
发布于 2020-09-26 01:34:26
不需要PnP。这对我很有效。
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);
}
}https://stackoverflow.com/questions/51210146
复制相似问题