2011-12-08 58 views
2

我想用自定義Web部件在其中創建幾個webpart頁面(以編程方式)。 我已經搜索了internetz,但找不到任何可以上班的東西。以編程方式創建一個帶有webpart的webpart頁面

這裏是我到目前爲止的代碼(這裏我創建了一個歡迎頁面,而不是一個web部件頁):

using (SPSite site = new SPSite("http://v99-sp-public/")) 
      { 
       using (SPWeb web = site.OpenWeb()) 
       { 
        PublishingSite pSite = new PublishingSite(site); 
        SPContentType ctype = pSite.ContentTypes["Welcome Page"]; 
        PageLayoutCollection pageLayouts = pSite.GetPageLayouts(ctype, true); 
        PageLayout pageLayout = pageLayouts["/_catalogs/masterpage/welcomesplash.aspx"]; 
        PublishingWeb pWeb = PublishingWeb.GetPublishingWeb(web); 
        PublishingPageCollection pPages = pWeb.GetPublishingPages(); 
        PublishingPage pPage = pPages.Add("Klanten2.aspx", pageLayout); 
        SPListItem newpage = pPage.ListItem; 
        newpage["Title"] = "Klanten"; 

        newpage.Update(); 

        newpage.File.CheckIn("Checkin"); 
        newpage.File.Publish("Publisch"); 
       } 
       } 

請幫我,

感謝。

回答

3

您可以使用SPLimitedWebPartManager和您的web部件定義URL來添加Web部件。這個例子應該讓你開始:

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); 

你填空這個代碼後會放一個的WebPart您的發佈頁面上。最後,當您實例化發佈頁面的WebPart管理器時,最重要的功能是SPLimitedWebPartManager.ImportWebPartSPLimitedWebPartManager.AddWebPart

0

好的,做了一點挖掘...這是我的解決方案。

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); 
     } 
    } 
} 
相關問題