培天王 发表于 2015-9-27 12:47:20

sharepoint 2010 使用程序向页面添加webpart

  如果是要使用自动化部署,将不会在需要手动在页面中添加 webpart,而是完全可以用程序来完成这些操作了。
  提供两个方法,用来添加webpart到页面上,其中需要注意的两个地方 是 webpart区域,区域一定是区域的 ID
  zoneIndex 是这个webpart的 摆放顺序,从上到下 1,2,3,4,5,6这样排列。



   1:   #region 添加webpart到页面
   2:          private string AddWebPartToPage(SPWeb web, string pageUrl, string webPartName, string zoneID, int zoneIndex)
   3:          {
   4:            using (SPLimitedWebPartManager webPartManager = web.GetLimitedWebPartManager(
   5:                      pageUrl, PersonalizationScope.Shared))
   6:            {
   7:                  using (System.Web.UI.WebControls.WebParts.WebPart webPart = CreateWebPart(web, webPartName, webPartManager))
   8:                  {
   9:                      SPLimitedWebPartCollection webParts = webPartManager.WebParts;
10:                      webPartManager.AddWebPart(webPart, zoneID, zoneIndex);
11:                      return webPart.ID;
12:                  }
13:            }
14:   
15:          }
16:   
17:          private System.Web.UI.WebControls.WebParts.WebPart CreateWebPart(SPWeb web, string webPartName, SPLimitedWebPartManager webPartManager)
18:          {
19:            SPQuery qry = new SPQuery();
20:            qry.Query = String.Format(CultureInfo.CurrentCulture, "<Where><Eq><FieldRef Name=\"FileLeafRef\" /><Value Type=\"File\">{0}</Value></Eq></Where>", webPartName);
21:   
22:            SPList webPartGallery = null;
23:   
24:            if (null == web.ParentWeb)
25:            {
26:                  webPartGallery = web.GetCatalog(
27:                     SPListTemplateType.WebPartCatalog);
28:            }
29:            else
30:            {
31:                  webPartGallery = web.Site.RootWeb.GetCatalog(
32:                     SPListTemplateType.WebPartCatalog);
33:            }
34:   
35:            SPListItemCollection webParts = webPartGallery.GetItems(qry);
36:   
37:            XmlReader xmlReader = new XmlTextReader(webParts.File.OpenBinaryStream());
38:            string errorMsg;
39:            System.Web.UI.WebControls.WebParts.WebPart webPart = webPartManager.ImportWebPart(xmlReader, out errorMsg);
40:   
41:            return webPart;
42:          }
43:          #endregion
  使用方法



   1:AddWebPartToPage(oWeb, oList.DefaultViewUrl, “webpartname.webpart”, "Main", 1);
页: [1]
查看完整版本: sharepoint 2010 使用程序向页面添加webpart