2011-12-08 2 views
2

사용자 정의 웹 파트가 포함 된 여러 웹 파트 페이지를 (프로그래밍 방식으로) 만들고 싶습니다. internetz을 검색했지만 작동시킬 수있는 항목을 찾을 수 없습니다.프로그래밍 방식으로 웹 파트가있는 웹 파트 페이지 만들기

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

이 저를 도와주세요,

감사합니다 : (내가 아닌는 WebPart 페이지 환영 페이지를 만들 경우)

여기에 지금까지 내 코드입니다.

답변

3

SPLimitedWebPartManager 및 웹 파트 정의 URL을 사용하여 웹 파트를 추가 할 수 있습니다. 이 예제는 시작해야합니다 :

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를 넣습니다. 결국 가장 중요한 기능은 SPLimitedWebPartManager.ImportWebPartSPLimitedWebPartManager.AddWebPart입니다. 게시 페이지의 WebPart 관리자를 인스턴스화하면됩니다.

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); 
     } 
    } 
} 
관련 문제