2011-02-16 45 views
3

我有一个SharePoint网站。我正在尝试打开一个子网站并获取该子网站中所有列表的列表。此代码返回顶级“http:// myspserver”列表。
如何获取/ mysubsite中的列表?SharePoint子网站 - 遍历列表

string webUrl = "http://myspserver/mysubsite"; 

using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb()) //Open SP Web 
{ 

    SPListCollection collList = oWebsite.Lists; //Open Lists 

    foreach (SPList oList in SPContext.Current.Web.Lists) 
    //For Each List Execute this 
    { 
     .... 
    } 
} 
+0

也许这可以帮助HTTP ://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.getlist.aspx – 2011-02-16 15:56:54

回答

4

您应该遍历collList而不是SPContext.Current.Web.Lists

foreach (SPList oList in collList) 
{ 
} 

SPContext.Current.Web.Lists会得到你目前在网站内。据推测,这是http://myspserver当你运行你的代码。

另外,请注意,您的代码泄漏 - 您不处理SPSite对象。它应该看起来像:

using(SPSite site = new SPSite(webUrl)) 
using(SPWeb oWebsite = site.OpenWeb()) 
{ 
} 
+0

我仍然试图理解内存泄漏的概念是否有任何信息可以让我尝试并帮助我理解泄漏。 – atrljoe 2011-02-16 18:45:35

2

您创建SPListCollection对象,但您使用SPContext.Current.Web.Listsforeach,纠正你的代码,这样,事情应该是罚款:

string webUrl = "http://myspserver/mysubsite"; 

using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb()) //Open SP Web 
{ 

    SPListCollection collList = oWebsite.Lists; //Open Lists 

    foreach (SPList oList in collList) 
    //For Each List Execute this 
    { 
     .... 
    } 
}