2011-02-07 19 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

ありがとう、他の1つの質問SPContext.Current.Web.Listsは多くのシステムリストを返す、とにかくDocuments、Imagesなどのより少ないアイテムを返すだけで、ユーザーが作成したものを好む。 – atrljoe