Procedimiento para devolver sitios y colecciones de sitios
Es posible devolver todos los sitios web dentro de una colección de sitios, todos los subsitios de primer nivel bajo un sitio web, todos los subsitios y listas para el sitio web actual, o la colección de colecciones de sitios en una aplicación web de SharePoint, como se muestra en los ejemplos siguientes.
Es posible devolver todos los sitios web dentro de una colección de sitios, incluido el sitio de nivel superior y todos los subsitios, mediante la propiedad AllWebs de la clase SPSite. El ejemplo siguiente muestra los títulos de todos los sitios y listas en la colección de sitios actual.
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
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>");
}
}
El ejemplo anterior requiere directivas using (Imports en Visual Basic) para los espacios de nombres Microsoft.SharePoint y Microsoft.SharePoint.Utilities.
Para devolver una lista de todos los subsitios de primer nivel debajo de un sitio web, use la propiedad Webs de la clase SPWeb. El siguiente ejemplo muestra una lista de títulos del subsitio.
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
SPWeb mySite = SPContext.Current.Web;
SPWebCollection sites = mySite.Webs;
foreach (SPWeb subSite in sites)
{
Response.Write(SPEncode.HtmlEncode(subSite.Title) + "<BR>");
}
El ejemplo anterior requiere directivas using (Imports en Visual Basic) para los espacios de nombres Microsoft.SharePoint y Microsoft.SharePoint.Utilities.
En lugar de usar una instrucción foreach, en el siguiente ejemplo se usan instrucciones for anidadas para mostrar una lista de direcciones URL de subsitios y una lista de títulos.
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
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>");
}
}
El ejemplo anterior requiere directivas using (Imports en Visual Basic) para los espacios de nombres Microsoft.SharePoint y Microsoft.SharePoint.Utilities.
En el siguiente ejemplo se muestran todos los subsitios y listas para el sitio web actual, así como el número de elementos de cada lista. En el ejemplo, se usan instrucciones foreach anidadas para recorrer en iteración las colecciones de sitios web y listas.
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
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>");
}
}
El ejemplo anterior requiere directivas using (Imports en Visual Basic) para los espacios de nombres Microsoft.SharePoint y Microsoft.SharePoint.Utilities.
Para devolver la colección de colecciones de sitios en una aplicación web de SharePoint, use la propiedad Sites de la clase Microsoft.SharePoint.Administration.SPWebApplication. Use las propiedades de la clase Microsoft.SharePoint.SPContext para devolver la aplicación web actual. El siguiente ejemplo muestra las direcciones URL de todas las colecciones de sitios en la aplicación web actual.
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
SPWebApplication webApplication = SPContext.Current.Site.WebApplication;
SPSiteCollection siteCollections = webApplication.Sites;
foreach (SPSite siteCollection in siteCollections)
{
Response.Write(siteCollection.Url + "<BR>");
}
El ejemplo anterior requiere directivas using (Imports en Visual Basic) para los espacios de nombres Microsoft.SharePoint,Microsoft.SharePoint.Administration y Microsoft.SharePoint.Utilities.
En el ejemplo se presupone la existencia de una página .aspx que contiene un control de etiqueta.
Vea también
Referencia
Otros recursos
Trabajar con objetos de listas y colecciones
Introducción a la personalización mediante programación de un sitio web de SharePoint en Visual Studio
Validación de seguridad y realización de envíos para actualizar datos
Concesión de privilegio