sharepoint 2010プログラムを使用してページにwebpartを追加

6886 ワード

自動化された導入を使用する場合は、手動でページにwebpartを追加する必要はありません.プログラムでこれらの操作を完了することができます.
2つの方法を提供して、webpartをページに追加します.ここで注意しなければならない2つの場所は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[0].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

<!--
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
-->
使用方法
   1:  AddWebPartToPage(oWeb, oList.DefaultViewUrl, “webpartname.webpart”, "Main", 1);

<!--
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
-->