2012-03-01 52 views
1

是否可以通過整個網站集中的內容類型獲取所有文件?這是我目前擁有的代碼:按內容類型獲取網站集中的所有文件

//Get list of subsites to traverse 
      List<string> subsites = getSubSiteList(); 
      foreach (string siteUrl in subsites) 
      { 
       using (SPWeb web = new SPSite(siteUrl).OpenWeb()) 
       { 
        if (web.GetFolder("Pages").Exists) 
        { 
         //Get Pages Folder from subsite      
         SPFolder folderCol = web.Folders["Pages"]; 

         //Set files in Pages folder 
         SPFileCollection fileCol = folderCol.Files; 
         foreach (SPFile file in fileCol) 
         { 
          //Debug.WriteLine("File in site: " + siteUrl + " file: " + file.Name); 
         } 
        } 
        web.Dispose(); 
       } 
      } 

在這段代碼中,我通過所有的子網站進行迭代,並打算在「頁面」文件夾中得到一定的頁面,但我希望能夠只把所有這些文件不需要通過每個子網站,並通過內容類型獲取它,而不是進入「Pages」文件夾並從那裏解析。代碼看起來如何?謝謝!

回答

3

什麼你要找的是一個site data query

其他選項將以編程方式利用搜索功能,但我認爲它不如選項;網站數據查詢的確是爲此而設計的。

0

你可以嘗試類似這樣的方式獲取所有網站以及子網站 請參閱此MSDN網站以獲取可用的不同選項列表。 How to: Enumerate Sites and Site Collections

SPSite oSiteCollection = SPContext.Current.Site; 
SPWebCollection collWebsite = oSiteCollection.AllWebs; 

for (int i = 0; i < collWebsite.Count; i++) 
{ 
    using (SPWeb oWebsite = collWebsite[i]) 
    { 
     SPListCollection collList = oWebsite.Lists; 

     for (int j = 0; j < collList.Count; j++) 
     { 
      Label1.Text += SPEncode.HtmlEncode(collWebsite[i].Title) + " " 
       + SPEncode.HtmlEncode(collList[j].Title) + "<BR>"; 
     } 
    } 
相關問題