SharePoint 使用代碼為頁面添加WebPart


  傳統的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、 簡單截下圖,大家看看,順便看看引用的頭文件;

clip_image001

  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、 執行控制台前后的效果截圖,如下圖:

clip_image002

(執行前的頁面截圖)

clip_image003

(執行后的頁面截圖)

  6、編輯頁面,查看內容編輯器所屬的區域,確實是左欄,添加正確!

clip_image004

  以上就是本文要介紹的全部內容,篇幅較短,截圖有點多,呵呵,希望能夠帶給有需要的人以幫助,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM