0

我正在尝试以编程方式在现代 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);
4

0 回答 0