我正在尝试以编程方式在现代 SharePoint 页面中创建轮播 Web 部件。我没有找到此 webpart 的任何文档或示例。我遇到的主要问题是我没有找到如何设置图像的 url。我尝试手动添加轮播并以编程方式设置所有相同的属性,但确实如此不起作用,主要是因为属性存储在没有设置器的 ServerProcessedContent 中。此页面建议设置 webPartData 但没有运气:https ://github.com/pnp/PnP-Sites-Core/issues/1729
你能发布一个允许实现这一目标的样本吗?
OfficeDevPnP.Core.Pages.ClientSidePage clientSidePage = GetClientSidePage("testheader");
ClearSections(clientSidePage);
AddSection(clientSidePage, 2);
AddCarouselWebPart(clientSidePage, 0, 1);
SaveClientSidePage(clientSidePage);
Function AddCarouselWebPart:
CanvasSection section = page.Sections[sectionId];
ClientSideWebPart webPart = page.InstantiateDefaultWebPart(DefaultClientSideWebParts.ImageGallery);
webPart.Properties["layout"] = 1;
dynamic carouselSettings = new JObject();
carouselSettings.autoplay = true;
carouselSettings.autoplaySpeed = 5;
carouselSettings.dots = true;
carouselSettings.lazyLoad = true;
carouselSettings.metadata = true;
carouselSettings.swipe = true;
webPart.Properties["carouselSettings"] = carouselSettings;
dynamic gridSettings = new JObject();
gridSettings.imageSize = 2;
gridSettings.imageCropping = 1;
gridSettings.imageAspectRatio = 1;
gridSettings.lightbox = false;
webPart.Properties["gridSettings"] = gridSettings;
webPart.Properties["imageSourceType"] = 1;
webPart.Properties["isRecursive"] = false;
webPart.Properties["isCdnEnabledForList"] = false;
webPart.Properties["hasDynamicModeEnabled"] = false;
webPart.Properties["maxImagesCount"] = 10;
JObject imageSources = new JObject
{
{ "images[0].url", "/sites/Test/images/1.jpg" },
{ "images[1].url", "/sites/Test/images/2.jpg" },
{ "images[2].url", "/sites/Test/images/3.jpg" }
};
dynamic serverProcessedContent = new JObject();
serverProcessedContent.htmlStrings = new JObject();
serverProcessedContent.searchablePlainTexts = new JObject();
serverProcessedContent.imagesources = imageSources;
serverProcessedContent.links = new JObject();
JObject customMetadata = new JObject
{
{ "images[0].url", new JObject() },
{ "images[1].url", new JObject()},
{ "images[2].url", new JObject() }
};
serverProcessedContent.customMetadata = customMetadata;
JObject componentDependencies = new JObject();
componentDependencies["layoutComponentId"] = "8ac0c53c-e8d0-4e3e-87d0-7449eb0d4027";
serverProcessedContent.componentDependencies = componentDependencies;
JObject final = new JObject
{
{ "serverProcessedContent", serverProcessedContent}
};
webPart.Properties["webPartData"] = final;
//webPart.ServerProcessedContent = serverProcessedContent;
page.AddControl(webPart, section.Columns[columnId], 1);