2011-02-07 7 views
0

안녕하세요.이 코드는 SharePoint 사이트를 통과하며 모든 목록을보고 레이블로 돌아갑니다. 기본적으로 내가는 현재 사이트 만 나열 잡고 싶어하고, 지금 아래되지 않은 하위 사이트가이 같은 내 SP 사이트가 :SharePoint 사이트/목록 열거 형

Main Site 
-Documents 
-Images 
-MyListA 
--Engineering (subSite) 
---Documents 
---Images 
---MyList10 

그것은 정상적인 목록 이미지 문서를 복제하고 MyList10가 표시됩니다.

foreach (SPList list in SPContext.Current.Web.Lists) 
    { 
     Label1.Text = SPEncode.HtmlEncode(list.Title); // notice that it will overwrite label text every time 
    } 

는 또한 사용자가 제공하는 코드가 일부 메모리 누수가 언급 : 내가 원하는 모든 문서 이미지 MyListA는 당신이 필요로하는 모든이 당신

 string webUrl = SPContext.Current.Site.Url.ToString(); 

     using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb()) 
     { 
      SPWebCollection subSites = oWebsite.Webs; 

      foreach (SPWeb subSite in subSites) 
      { 

       SPListCollection collList = subSite.Lists; 

       foreach (SPList oList in collList) 
       { 
        Label1.Text = SPEncode.HtmlEncode(oList.Title); 
       } 

       subSite.Close(); 
      } 
     } 

답변

2

감사합니다.

+0

메모리 누수에 대해서는 내가 처분해야한다는 사실을 언급하고 있습니까? – atrljoe

+1

코드에서 내가 처형하기 전에 썼다. 코드에서 새 SPSite (webUrl)를 삭제해야합니다 (SPContext.Current.Site를 더 잘 사용하여 삭제해서는 안됩니다). 또한 예외가 발생하면 subSite 객체가 삭제되지 않으므로 subSite를 단순히 삭제하는 대신 {{}} finally {if (subSite! = null) subSite.Dispose()}를 시도하십시오. – EvgK

+0

감사합니다. SPContext.Current.Web.Lists는 많은 시스템 목록을 반환합니다. 어쨌든 Documents, Images 및 사용자가 작성한 것과 같은 항목은 더 이상 반환하지 않습니다. – atrljoe