SharePoint WebPart zoneId

时间:2018-11-08 11:04:02

标签: sharepoint web-parts

我正在在线使用SharePoint。
我想使用此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区(通过“编辑”页面手动编辑Webpart时,我会在右侧选项卡中看到它)
  • 正文此代码几天前就可以使用了!,但现在不再可用了)
  • 标题
  • 底部

findind zoneId的正确方法是什么?

编辑

页面是主页,我在某处读到它是一个 wiki页面,因此它可能具有不同的ZoneId。

1 个答案:

答案 0 :(得分:1)

ZoneID可能会有所不同,具体取决于页面布局,但是现成的SharePoint布局通常将以下ID用于Webpart区域:

  • 标题栏
  • 标题
  • 左列
  • MiddleColumn
  • RightColumn
  • 脚步

确保在导入Web部件后在文件对象上调用update()方法,并在上下文中调用executeQueryAsync()方法-后一个功能尤其负责将请求发送到服务器并应用更改

这是一篇不错的文章,介绍如何以编程方式将Webpart添加到页面:How to programmatically add a ClientSide Web Part to a SharePoint page