我正在在线使用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的各种值,但目前它们都不起作用:
findind zoneId的正确方法是什么?
编辑
页面是主页,我在某处读到它是一个 wiki页面,因此它可能具有不同的ZoneId。
答案 0 :(得分:1)
ZoneID可能会有所不同,具体取决于页面布局,但是现成的SharePoint布局通常将以下ID用于Webpart区域:
确保在导入Web部件后在文件对象上调用update()
方法,并在上下文中调用executeQueryAsync()
方法-后一个功能尤其负责将请求发送到服务器并应用更改
这是一篇不错的文章,介绍如何以编程方式将Webpart添加到页面:How to programmatically add a ClientSide Web Part to a SharePoint page