Create a webpart page with an webpart with in it programmatically

前端 未结 2 774
-上瘾入骨i
-上瘾入骨i 2021-01-22 01:34

I want to create several webpart pages (programmatically) with custom web parts in it. I have searched the internetz but couldn\'t find anything that I could get to work.

<
相关标签:
2条回答
  • 2021-01-22 02:16

    OK, did a little digging... here is my solution.

    using(SPSite site = new SPSite("http://my.dev.com"))
    {
        using(SPWeb web = site.OpenWeb())
        {
            SPFile page = web.GetFile("SitePages/Welcome.aspx");
            using(SPLimitedWebPartManager manager = page.GetLimitedWebPartManager(PersonalizationScope.Shared))
            {
                string errMsg = string.Empty;
                SPFile myWebPart = web.GetFile("_catalogs/wp/myWebPart.webpart");
                XmlTextReader read = newXmlReader(myWebPart.OpenBinaryStream());
                var wp = manager.ImportWebPart(read, out errMsg);
                manager.AddWebPart(wp, "<Webpart Zone>", 1);
                manager.SaveChanges(wp);
            }  
        }
    }
    
    0 讨论(0)
  • 2021-01-22 02:30

    You can add webparts by using the SPLimitedWebPartManager and your webPart defininition URL. This example should get you started:

    XmlTextReader reader = new XmlTextReader(new StringReader(web.GetFileAsString(<Url to your .webpart file here>)));
    
    SPLimitedWebPartManager wpm = web.GetLimitedWebPartManager(<URL to your page>, Syste.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
    
    WebPart wp = (WebPart) wpm.ImportWebPart(reader, out errMsg);
    wp.Title = "My Title for this webpart";
    
    wpm.AddWebPart(wp, <Name of WebpartZone here, e.g. "Header">, <Zone Index here>);
    wpm.SaveChanges(wp);
    

    After you fill in the blanks this code will put a WebPart on your publishing page. In the end the most important functions are SPLimitedWebPartManager.ImportWebPart and SPLimitedWebPartManager.AddWebPart as you instantiate the WebPart manager for the publishing page.

    0 讨论(0)
提交回复
热议问题