Create a webpart page with an webpart with in it programmatically

拈花ヽ惹草 提交于 2019-12-02 02:06:47

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.

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);
        }  
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!