Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint SPFx-通过主页上的代码设置web部件会删除其他内容_Sharepoint_Sharepoint Online_Csom_Spfx_Sharepointframework - Fatal编程技术网

Sharepoint SPFx-通过主页上的代码设置web部件会删除其他内容

Sharepoint SPFx-通过主页上的代码设置web部件会删除其他内容,sharepoint,sharepoint-online,csom,spfx,sharepointframework,Sharepoint,Sharepoint Online,Csom,Spfx,Sharepointframework,我正在尝试使用SharePoint CSOM/REST提供一个通信站点,然后向主页添加一个web部件。第一部分(资源调配)运行良好。但是,当我使用SharePointPnPCoreOnlineNuGet包添加web部件时,主页上的所有现有web部件都将被删除 以下是我的配置代码(为简洁起见简化): var homePage=clientContext.Web.LoadClientSidePage(“Home.aspx”); var clientSideComponent=homePage.Ava

我正在尝试使用SharePoint CSOM/REST提供一个通信站点,然后向主页添加一个web部件。第一部分(资源调配)运行良好。但是,当我使用
SharePointPnPCoreOnline
NuGet包添加web部件时,主页上的所有现有web部件都将被删除

以下是我的配置代码(为简洁起见简化):

var homePage=clientContext.Web.LoadClientSidePage(“Home.aspx”);
var clientSideComponent=homePage.AvailableClientSideComponents()
.SingleOrDefault(csc=>csc.Id.Equals(“{}”,StringComparison.OrdinalIgnoreCase));
ClientSideWebPart webPart=新的ClientSideWebPart(clientSideComponent);
CanvasSection节=新建CanvasSection(主页,CanvasSectionTemplate.OneColumn,0);
主页。节。添加(节);
homePage.Save();
homePage.AddControl(webPart,section.Columns[0]);
homePage.Save();
homePage.Publish();
当站点刚刚设置,主页尚未修改时:

  • 该页面显示一组默认web部件。例如,如果我选择了“主题”设计,我可以看到
    • 一个全宽部分,包含一个“英雄”web部件,有五个平铺,以及一些欢迎信息和链接
    • “一栏”部分,包含多个web部件:新闻、事件、文档、快速链接和个人资料
  • 从“SitePages”库下载的页面内容不包含
    元素,因此没有明确定义的web部件
  • 这些web部件的内容来自
    https://spoprod-a.akamaihd.net/files/sp-client-prod_2019-09-20.008/sp-pages-assembly_en-us_36e69c06b20e347fb4426bfdff916a8e.js
    文件
  • web部件内容以当前用户的语言翻译
使用前面的代码设置web部件后,web部件将显示在页面上,但所有初始web部件都已删除

如果不是自动设置web部件,而是手动设置:

  • 保留默认的web部件
  • 在“SitePages”中存储的页面中,我可以在元素
    中看到原始web部件和我的web部件
  • 它的初始内容不再被翻译,但仅以第一次编辑页面的用户的语言提供

因此,我的问题是:有没有一种方法可以通过编程将web部件添加到新配置的现代网站(团队或通信)的主页,而不删除默认web部件?

找到答案了吗?不幸的是,没有。我必须明确规定所有默认web部件。我这样做了:1)在页面中做一些更改2)保存CanvasContent1字段的内容3)将该内容存储在我的设置解决方案中,用占位符替换特定的URL和ID,使其充当模板4)设置新站点时,用站点特定的ID和URL替换占位符5)手动设置字段“CanvasContent1”.你找到答案了吗?不幸的是没有。我必须明确规定所有默认web部件。我这样做了:1)在页面中做一些更改2)保存CanvasContent1字段的内容3)将该内容存储在我的设置解决方案中,用占位符替换特定的URL和ID,使其充当模板4)设置新站点时,用站点特定的ID和URL替换占位符5)手动设置字段“CanvasContent1”.
var homePage = clientContext.Web.LoadClientSidePage("Home.aspx");
var clientSideComponent = homePage.AvailableClientSideComponents()
    .SingleOrDefault(csc => csc.Id.Equals("{<web part ID here>}", StringComparison.OrdinalIgnoreCase));
ClientSideWebPart webPart = new ClientSideWebPart(clientSideComponent);
CanvasSection section = new CanvasSection(homePage, CanvasSectionTemplate.OneColumn, 0);
homePage.Sections.Add(section);
homePage.Save();
homePage.AddControl(webPart, section.Columns[0]);
homePage.Save();
homePage.Publish();