SPSiteDataQuery.Webs Property
Gets or sets the inner XML that specifies which Web sites to include in the query. as specified by the Scope attribute on the Webs tag in the query. By default, the query considers the current Web site, that is, the Web site from which the
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
Public Property Webs As String
Get
Set
Dim instance As SPSiteDataQuery
Dim value As String
value = instance.Webs
instance.Webs = value
public string Webs { get; set; }
Property Value
Type: System.String
A string containing the inner XML that specifies the Web sites to include.
Remarks
The Webs property specifies which Web sites to include in the query. By default, the query considers only the Web site from which the GetSiteData method was invoked.
You can broaden the scope of the query by setting the Webs property to a string containing a Webs tag and a Scope attribute. Possible values of the Scope attribute include Recursive and SiteCollection.
<Webs Scope="Recursive" />
<Webs Scope="SiteCollection" />
When the Scope attribute is set to Recursive, the query considers the current Web site and all subsites of the current Web site.
When the Scope attribute is set to SiteCollection, the query considers all Web sites that are in the same site collection as the current Web site. Of the two attribute values, this is the more inclusive.
Examples
The following example is a console application that retrieves data from a specific list. The query will succeed if the list exists anywhere within the current site collection because the Scope attribute of the Webs tag is set to SiteCollection.
Imports System
Imports System.Data
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using site As SPSite = New SPSite("http://localhost")
Using web As SPWeb = site.OpenWeb("/subsite/")
Dim query As SPSiteDataQuery = New SPSiteDataQuery()
' Ask for a list by ID.
query.Lists = "<Lists><List ID='b0b0bf7f-a2ca-43cc-b63e-a74ba8db93db'/></Lists>"
' Get the Title (Last Name) and FirstName fields.
query.ViewFields = "<FieldRef Name='Title' />" + _
"<FieldRef Name='FirstName' Nullable='TRUE'/>"
' Query all Web sites in this site collection.
query.Webs = "<Webs Scope='SiteCollection'>"
Dim results As DataTable = web.GetSiteData(query)
Dim firstName As String
Dim i As Integer
For i = 0 To results.Rows.Count - 1 Step i + 1
firstName = results.Rows(i)("FirstName")
Console.WriteLine("{0}, {1}", results.Rows(i)("Title"), _
IIf(String.IsNullOrEmpty(firstName), "unknown", firstName))
Next
End Using
End Using
Console.Write(vbCrLf + "Press ENTER to continue...")
Console.ReadLine()
End Sub
End Module
using System;
using System.Data;
using Microsoft.SharePoint;
namespace Test
{
class ConsoleApp
{
static void Main(string[] args)
{
using (SPSite site = new SPSite("http://localhost"))
{
using (SPWeb web = site.OpenWeb("/subsite/"))
{
SPSiteDataQuery query = new SPSiteDataQuery();
//Ask for a list by ID.
query.Lists = "<Lists><List ID=\"b0b0bf7f-a2ca-43cc-b63e-a74ba8db93db\"/></Lists>";
// Get the Title (Last Name) and FirstName fields.
query.ViewFields = "<FieldRef Name=\"Title\" />" +
"<FieldRef Name=\"FirstName\" Nullable=\"TRUE\"/>";
// Query all Web sites in this site collection.
query.Webs = "<Webs Scope=\"SiteCollection\">";
DataTable results = web.GetSiteData(query);
string firstName;
for (int i = 0; i < results.Rows.Count; i++)
{
firstName = results.Rows[i]["FirstName"] as string;
Console.WriteLine("{0}, {1}", results.Rows[i]["Title"],
string.IsNullOrEmpty(firstName) ? "unknown" : firstName );
}
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
}
}