2011-03-14 1 views

답변

1

여러분, 위의 질문에 대한 일부 코드를 찾을

  • 사이트와 웹의 객체를 생성합니다.

사용 (SPSite oSite = 신규> SPSite (cbWebSite.SelectedItem.ToString())) 사용 (SPWeb 웨브 = oSite.OpenWeb는())

  • 은 데이터 테이블을 만들기 부실하거나 폐쇄/숨겨진 웹 파트의 목록을 저장합니다.

dtWebParts = (System.Data.DataTable) CreateDataTableForUnusedWebParts();

System.Data.DataTable dtWebPartReport = new 
    System.Data.DataTable(); 

     DataColumn dtCol = new DataColumn(); 
     dtCol.ColumnName = COLUMN_WEBAPP_NAME; 
     dtCol.DataType = System.Type.GetType("System.String"); 
     dtWebPartReport.Columns.Add(dtCol); 
     . 
     . 
     . 
  • 전화 기능은 보고서를 생성합니다.

    private void generateWebPartReportForWeb(SPWeb oWeb, SPSite oSite) 
    { 
    
 try 
     { 
      //If team Site then read homepage 
      foreach (SPFile rootFile in oWeb.Files) 
      { 
       checkPageForWebParts(oWeb, oSite,rootFile); 
      } 

      foreach (SPList oList in oWeb.Lists) 
      { 
       if (oList.BaseType == SPBaseType.DocumentLibrary) 
       { 
        lstName = oList.Title.ToString(); 
        spDocumentLibrary =(SPDocumentLibrary)oWeb.Lists[lstName]; 
        if (spDocumentLibrary.Title.ToString() !="Master Page Gallery" && 
         spDocumentLibrary.Title.ToString() !="dataconnectionLib" && 
         spDocumentLibrary.Title.ToString() !="Form Templates" && 
         spDocumentLibrary.Title.ToString() !="Images" && 
         spDocumentLibrary.Title.ToString() !="List Template Gallery" & 
         spDocumentLibrary.Title.ToString() !="Scripts" && 
         spDocumentLibrary.Title.ToString() !="Site Template Gallery" & 
         spDocumentLibrary.Title.ToString() !="Style Library" && 
         spDocumentLibrary.Title.ToString() !="Web Part Gallery" && 
         spDocumentLibrary.Title.ToString() !="Workflows") 
        { 

         foreach (SPListItem spListItem in spDocumentLibrary.Items) 
         { 
          spFile = spListItem.File; 
          checkPageForWebParts(oWeb, oSite,spFile); 
         } 
        } 
       } 
      } 

      if (oWeb.Webs.Count > 0) 
      { 
       foreach (SPWeb subsite in oWeb.Webs) 
       { 
        generateWebPartReportForWeb(subsite, oSite); 
       } 
      } 

      DataView dv = dtWebParts.DefaultView; 
      dv.Sort = "Document Library Path ASC"; 
      dataGridView1.DataSource = dtWebParts; 
      dataGridView1.Update(); 

     } 
  • 코드 페이지에는 WebPart를 확인하려면 :
  private void checkPageForWebParts(SPWeb oWeb,SPSite oSite, SPFile spFile) 
     { 
      try 
      { 
      string[] strFileName = spFile.Name.Split('.'); 
      string fileExtension = strFileName[strFileName.Length - 1].ToUpper(); 
      if (fileExtension.ToUpper() == "ASPX") 
      { 
       using (SPLimitedWebPartManager wpm = oWeb.GetLimitedWebPartManager(spFile.Url, PersonalizationScope.Shared)) 
       { 
        foreach (System.Web.UI.WebControls.WebParts.WebPart wp in wpm.WebParts) 
        { 
         if (wp.IsClosed || wp.Hidden) 
         { 
          DataRow dr = dtWebParts.NewRow(); 
          if (oSite.WebApplication.Name != null) 
           dr[COLUMN_WEBAPP_NAME] = oSite.WebApplication.Name; 
          if (oSite.Url != null) 
           dr[COLUMN_SITECOLLECTION_NAME] = oSite.Url; 
          if (oWeb.Name != null) 
           dr[COLUMN_SUBSITE_NAME] = oWeb.Name; 
          if (oWeb.Url != null) 
           dr[COLUMN_DOCLIB_PATH] =cbWebApp.SelectedItem.ToString() + spFile.ServerRelativeUrl;//oWeb.Url + "/" + spDocumentLibrary.ToString(); 
          if (spFile.Name != null) 
           dr[COLUMN_DOCNAME] = spFile.Name; 
          if (wp.Title != null) 
           dr["WebPart Name"] = wp.Title; 
          if (wp.IsClosed) 
           dr["Hidden/Closed"] = "Closed"; 
          else if (wp.Hidden) 
           dr["Hidden/Closed"] = "Hidden"; 

          dtWebParts.Rows.Add(dr); 
          dtWebParts.AcceptChanges(); 
         } 
        } 
       } 
      } 
     } 
0

link이 도움이 될 것입니다.

protected override void CreateChildControls() 
    { 
     list = new BulletedList(); 
     WebPartZoneCollection zones = this.WebPartManager.Zones; 
     foreach (WebPartZone zone in zones) 
     { 
     WebPartCollection webparts = zone.WebParts; 
     foreach (WebPart webpart in webparts) 
     { 
      **You can check webpart.hidden property here.** 
      list.Items.Add(
      string.Format("{0} ({1}), {2}", 
      webpart.Title, webpart.GetType().Name, 
      zone.DisplayTitle)); 
     } 
     } 
     this.Controls.Add(list); 
    } 
관련 문제