WSS3SDK之:如何获取网站和站点集对象

您可以返回一个网站集下的所有网站,一个网站下的所有位于第一层的子网站,当前网站下所有的子站点和列表,或是某个SharePoint Web应用程序下面的所有网站集,正如下面的例子所示。

利用 SPSite类的 AllWebs属性,您可以返回一个网站集下的所有网站,包括顶级网站和所有子网站。下面的例子显示了在当前的网站集下的所有网站和列表的标题。

VB

Dim  mySite  As  SPSite  =  SPContext.Current.Site
Dim  subSites  As  SPWebCollection  =  mySite.AllWebs
Dim  i  As   Integer

For  i  =   0   To  subSites.Count  -   1
    
Dim  lists  As  SPListCollection  =  subSites(i).Lists
    
Dim  j  As   Integer

    
For  j  =   0   To  lists.Count  -   1
        Response.Write(SPEncode.HtmlEncode(subSites(i).Title) 
            
&   "  ::  "  _  &  SPEncode.HtmlEncode(lists(j).Title)  &   " <BR> " )
    
Next  j
Next  i


C#

SPSite mySite  =  SPContext.Current.Site;
SPWebCollection subSites 
=  mySite.AllWebs;

for  ( int  i = 0 ;i < subSites.Count;i ++ )
{
    SPListCollection lists 
=  subSites[i].Lists;

    
for  ( int  j = 0 ;j < lists.Count;j ++ )
    {
        Response.Write(SPEncode.HtmlEncode(subSites[i].Title) 
            
+   "  ::  "   +  SPEncode.HtmlEncode(lists[j].Title)  +   " <BR> " );
    }
}

上面的例子需要引用Microsoft.SharePoint和Microsoft.SharePoint.Utilities命名空间。
如果我们要返回某网站下的所有第一层子站点的清单,可以使用SPWeb类的Webs属性。下面是示例代码:

VB

Dim  mySite  As  SPWeb  =  SPContext.Current.Web
Dim  sites  As  SPWebCollection  =  mySite.Webs
Dim  subSite  As  SPWeb

For   Each  subSite  In   sites
    Response.Write(SPEncode.HtmlEncode(subSite.Title) 
&   " <BR> " )
Next  subSite

C#

SPWeb mySite  =  SPContext.Current.Web;
SPWebCollection sites 
=  mySite.Webs;

foreach  (SPWeb subSite  in  sites)
{
    Response.Write(SPEncode.HtmlEncode(subSite.Title) 
+   " <BR> " );
}

上面的例子同样需要引用Microsoft.SharePoint和Microsoft.SharePoint.Utilities这两个命名空间。
下面的例子用for语句代替了foreach,处理相同的工作:
VB

Dim  mySite  As  SPWeb  =  SPContext.Current.Web
Dim  sites  As  SPWebCollection  =  mySite.Webs
Dim  i  As   Integer

For  i  =   0   To  sites.Count  -   1
    
Dim  lists  As  SPListCollection  =  sites(i).Lists
    
Dim  j  As   Integer

    
For  j  =   0   To  lists.Count  -   1
        Response.Write(sites(i).Url 
&   "  ::  "  
            
&  SPEncode.HtmlEncode(lists(j).Title)  &   " <BR> " )
    
Next  j
Next  i

C#

SPWeb mySite  =  SPContext.Current.Web;
SPWebCollection sites 
=  mySite.Webs;

for  ( int  i = 0 ;i < sites.Count;i ++ )
{
    SPListCollection lists 
=  sites[i].Lists;

    
for  ( int  j = 0 ;j < lists.Count;j ++ )
    {
        Response.Write(sites[i].Url 
+   "  ::  "  
            
+  SPEncode.HtmlEncode(lists[j].Title)  +   " <BR> " );
    }
}

这端代码同样需要引用Microsoft.SharePoint和Microsoft.SharePoint.Utilities这两个命名空间。
接下来的例子将显示当前网站下的所有子网站和列表,同时显示各列表中的条目数量。通过嵌套foreach语句来遍历所有的网站和列表集合。
VB

Dim  mySite  As  SPWeb  =  SPContext.Current.Web
Dim  sites  As  SPWebCollection  =  mySite.Webs
Dim  subSite  As  SPWeb

For   Each  subSite  In   sites
    Response.Write(
" <B> "   &  SPEncode.HtmlEncode(subSite.Title)  &   " </B> "  
        
&   " <BR> " )

    
Dim  lists  As  SPListCollection  =  subSite.Lists
    
Dim  list  As  SPList

    
For   Each  list  In   lists
        Response.Write(SPEncode.HtmlEncode(list.Title) 
&   "  ::  "  
           
&  list.ItemCount  &   " <BR> " )
    
Next  list
Next  subSite 

C#

SPWeb mySite  =  SPContext.Current.Web;
SPWebCollection sites 
=  mySite.Webs;

foreach  (SPWeb subSite  in  sites)
{
    Response.Write(
" <B> "   +  SPEncode.HtmlEncode(subSite.Title)  +   " </B> "  
        
+   " <BR> " );

    SPListCollection lists 
=  subSite.Lists;

    
foreach  (SPList list  in  lists)
    {
        Response.Write(SPEncode.HtmlEncode(list.Title) 
            
+   "  ::  "   +  list.ItemCount  +   " <BR> " );
    }
}

同样,本例也需要引用那2个命名空间。
如果要返回某SharePoint Web应用程序下所有的网站集的集合,可以使用Microsoft.SharePoint.Administration.SPWebApplication类的Sites属性。通过Microsoft.SharePoint.SPContent类的属性可以返回当前的Web应用程序。下面的样例显示了当前Web应用下所有网站集的URL地址。

VB
Dim  webApplication  As  SPWebApplication  =  SPContext.Current.Site.WebApplication
Dim  siteCollections  As  SPSiteCollection  =  webApplication.Sites
Dim  siteCollection  As  SPSite

For   Each  siteCollection  In  siteCollections
   Response.Write(siteCollection.Url 
+   " <BR> " )
Next  siteCollection


C#

SPWebApplication webApplication  =  SPContext.Current.Site.WebApplication;
SPSiteCollection siteCollections 
=  webApplication.Sites;

foreach  (SPSite siteCollection  in  siteCollections)
{
   Response.Write(siteCollection.Url 
+   " <BR> " );
}


上面的例子需要引用Microsoft.SharePoint,Microsoft.SharePoint.Administration,以及 Microsoft.SharePoint.Utilities命名空间,并假设位于一个包含label控件的.aspx页面中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值