傳統的SharePoint實施中,我們通常會創建SharePoint頁面,然后添加webpartzone,而后在上面添加webpart;但是有些情況下,也要求我們使用代碼,將webpart添加到相應webpartzone中,下面,簡單介紹下如何操作。
操作其實很簡單,大致原理是:用對象模型找到要添加webpart的頁面,然后找到webpart,指定webpartzone的Id,配置一下WebPart,更新頁面就可以了。在這里,我就簡單粘貼一下代碼和截圖了。
1、 我是新建一個控制台程序,就不截圖湊篇幅了;在里面添加兩個方法;
方法一:public static void addWebpart(string SiteUrl, string PageUrl)
簡介:根據頁面地址和站點地址,找到這個需要添加webpart的頁面,並把webpart加進去;
方法二:public static System.Web.UI.WebControls.WebParts.WebPart CreateWebPart(SPWeb web, SPLimitedWebPartManager webPartManager)
簡介:去webpart庫中,找到我們的webpart;
2、 簡單截下圖,大家看看,順便看看引用的頭文件;
3、 兩個方法的源代碼,如下:
1 public static void addWebpart(string SiteUrl, string PageUrl) 2 { 3 SPSite site = new SPSite(SiteUrl); 4 SPWeb web = site.OpenWeb(); 5 SPFile thePage = web.GetFile(PageUrl); 6 SPLimitedWebPartManager theWebPartManager = thePage.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared); 7 System.Web.UI.WebControls.WebParts.WebPart webPart = CreateWebPart(web, theWebPartManager); 8 theWebPartManager.AddWebPart(webPart, "Left", 1); 9 return; 10 }
4、方法二的源代碼,如下:
1 public static System.Web.UI.WebControls.WebParts.WebPart CreateWebPart(SPWeb web, SPLimitedWebPartManager webPartManager) 2 { 3 string webPartName = "MSContentEditor.dwp"; 4 SPQuery qry = new SPQuery(); 5 qry.Query = String.Format(CultureInfo.CurrentCulture, "<Where><Eq><FieldRef Name=\"FileLeafRef\" /><Value Type=\"File\">{0}</Value></Eq></Where>", webPartName); 6 SPList webPartGallery = null; 7 if (null == web.ParentWeb) 8 { 9 webPartGallery = web.GetCatalog(SPListTemplateType.WebPartCatalog); 10 } 11 else 12 { 13 webPartGallery = web.Site.RootWeb.GetCatalog(SPListTemplateType.WebPartCatalog); 14 } 15 SPListItemCollection webParts = webPartGallery.GetItems(qry); 16 XmlReader xmlReader = new XmlTextReader(webParts[0].File.OpenBinaryStream()); 17 string errorMsg; 18 ContentEditorWebPart webPart = (ContentEditorWebPart)webPartManager.ImportWebPart(xmlReader, out errorMsg); 19 string Mycontent = "這里是代碼添加的內容。。。"; 20 XmlDocument xmlDoc = new XmlDocument(); 21 XmlElement xmlElement = xmlDoc.CreateElement("MyElement"); 22 xmlElement.InnerText = Mycontent; 23 webPart.Content = xmlElement; 24 25 return webPart; 26 }
關於源代碼,還是要簡單說一下,方法一theWebPartManager.AddWebPart(webPart, "Left", 1)的第二個參數,就是你要插入的webpartzone的Id,我這個是兩欄的左欄,所以是Left;
第二個方法,返回的WebPart可能是System.Web.UI.WebControls.WebParts.WebPart這個類型的,有些參數會不存在,因為我這里測試是使用內容編輯器,所以轉換成了ContentEditorWebPart類型,否則不會有ContentEditorWebPart的Content屬性;
以上是自己使用過程中,遇到的問題,分享一下;
5、 執行控制台前后的效果截圖,如下圖:
(執行前的頁面截圖)
(執行后的頁面截圖)
6、編輯頁面,查看內容編輯器所屬的區域,確實是左欄,添加正確!
以上就是本文要介紹的全部內容,篇幅較短,截圖有點多,呵呵,希望能夠帶給有需要的人以幫助,謝謝!




