【问题标题】:SharePoint WebPart zoneIdSharePoint WebPart zoneId
【发布时间】:2019-04-11 21:14:07
【问题描述】:

我正在使用 SharePoint Online。
我想使用此 CSOM 代码将 WebPart 添加到页面:

SP.File oFile = _web.GetFileByUrl(SiteUrl + "/SitePages/" + pageName);
oFile.CheckOut();
LimitedWebPartManager limitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);
var importedWebPart = limitedWebPartManager.ImportWebPart(webPartSchemaXml);
var webPart = limitedWebPartManager.AddWebPart(importedWebPart.WebPart, zoneid, zoneIndex);
oFile.Update();
await SiteCtx.ExecuteQueryAsync();
oFile.CheckIn(String.Empty, CheckinType.MinorCheckIn);

问题是如何为zoneid字符串变量分配正确的值, 这是要添加 Web 部件的 Web 部件区域的名称。

当我运行这段代码时,什么也没有发生!
(它不会将 WebPart 添加到页面,我怀疑它与错误的 zoneId 有关)。

我已经阅读了各种帖子,从访问 .aspx 页面后面的代码试图找到 WebPartZone,访问 WebPartManager 类(它应该列出 ZoneId,但我不知道如何获取它,因为我使用的是LimitedWebPartManager 类)。

我尝试了 zoneId 的各种值,但目前它们都不起作用:

  • 1 区(只是猜测!)
  • 区域 2(通过编辑页面手动编辑 web 部件时,我在右侧选项卡中看到它)
  • Body代码在几天前就可以工作了!但现在不行了)
  • 标题
  • 底部

findind zoneId 的正确方法是什么?

编辑

该页面是主页,我在某处读到它是一个 wiki 页面,所以它可能有不同的 ZoneId。

【问题讨论】:

  • 只是为了确保:运行这个 sn-p 之后,您是否在上下文中调用了 oFile.update() 和 executeQueryAsync()?

标签: sharepoint web-parts


【解决方案1】:

ZoneID 可能因页面布局而异,但通常开箱即用的 SharePoint 布局将以下 ID 用于 Webpart 区域:

  • 标题栏
  • 标题
  • 左列
  • 中间列
  • 右列
  • 页脚

确保在导入 webpart 后对文件对象调用 update() 方法并在上下文中调用 executeQueryAsync() 方法 - 后一个函数特别负责将请求发送到服务器并应用您的更改。

这是一篇关于以编程方式将 webparts 添加到页面的好文章:How to programmatically add a ClientSide Web Part to a SharePoint page

【讨论】:

  • update() 方法调用的好点,我错过了,现在我已经插入了行。我希望这将是解决方案,但事实并非如此。也许是一个重要的编辑:我试图添加 web 部件的页面是主页,我在某处读过它是一个 wiki 页面 布局。
  • 哦,那有点不同,因为 webpart 页面上没有区域,并且您将 webpart 直接注入到 wiki 页面内容中。您必须将 webpart 添加到页面,然后将其注入页面的丰富内容的标记中。看看这个链接:c-sharpcorner.com/blogs/…
  • 感谢 Szab,它为我指明了正确的方向:但我在 PnP-Sites-Core 上使用了 PageExtensions 代码
猜你喜欢
  • 1970-01-01
  • 2011-07-10
  • 2013-08-29
  • 2010-10-09
  • 2011-11-01
  • 2011-12-14
  • 2020-11-07
  • 2010-10-09
  • 2010-10-01
相关资源
最近更新 更多