SPSiteDataQuery.Webs-Eigenschaft
Ruft ab oder legt den inneren XML-Code, der angibt, welche Websites in der Abfrage enthalten. vom Scope -Attribut für das Webs -Tag in der Abfrage angegeben ist. Standardmäßig werden bei die Abfrage der aktuellen Website, d. h., die Website, von dem die
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public Property Webs As String
Get
Set
'Usage
Dim instance As SPSiteDataQuery
Dim value As String
value = instance.Webs
instance.Webs = value
public string Webs { get; set; }
Eigenschaftswert
Typ: System.String
Eine Zeichenfolge mit den inneren XML-Code, der angibt, die Websites enthalten.
Hinweise
Die Webs -Eigenschaft gibt an, welche Websites in der Abfrage enthalten. Standardmäßig werden bei die Abfrage nur auf der Website, von dem die GetSiteData -Methode aufgerufen wurde.
Sie können den Bereich der Abfrage erweitern, indem Sie die Webs -Eigenschaft auf eine Zeichenfolge mit einem Tag Webs und ein Scope -Attribut. Mögliche Werte des Attributs Scope sind Recursive und SiteCollection.
<Webs Scope="Recursive" />
<Webs Scope="SiteCollection" />
Wenn das Attribut Scope auf Recursivefestgelegt ist, berücksichtigt die Abfrage den aktuellen Website und alle Unterwebsites der aktuellen Website.
Wenn das Attribut Scope auf SiteCollectionfestgelegt ist, berücksichtigt die Abfrage alle Websites, die in der gleichen Websitesammlung befindet wie die aktuelle Website befinden. Dies ist der zwei Attributwerte mehr inklusive.
Beispiele
Das folgende Beispiel ist eine Konsolenanwendung, die Informationen über die Größe jeder Datei in jede Dokumentbibliothek in einer Websitesammlung abruft. Die Anwendung dann durchlaufen und die Daten und druckt auf Bibliothek, Website und Websiteebenen-Auflistung.
Imports System
Imports System.Data
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using site As SPSite = New SPSite("https://localhost")
Using web As SPWeb = site.OpenWeb()
Dim query As SPSiteDataQuery = New SPSiteDataQuery()
' Query all Web sites in this site collection.
query.Webs = "<Webs Scope='SiteCollection'>"
' Ask for document libraries.
query.Lists = "<Lists BaseType='1' />"
' Get IDs for fields used in the query.
Dim fileSizeId As String = SPBuiltInFieldId.File_x0020_Size.ToString("B")
Dim fileSizeDisplayId As String = SPBuiltInFieldId.FileSizeDisplay.ToString("B")
' Select the records.
query.Query = "<Where><Gt>"
query.Query += "<FieldRef ID='" + fileSizeId + "' />"
query.Query += "<Value Type='Number'>0</Value>"
query.Query += "</Gt></Where>"
' Specify the view fields.
query.ViewFields = "<FieldRef Name='" + fileSizeDisplayId + "' />"
query.ViewFields += "<ProjectProperty Name='Title' />"
query.ViewFields += "<ListProperty Name='Title' />"
' Submit the query.
Dim results As DataTable = web.GetSiteData(query)
' Process the results.
Dim webTitle As String = String.Empty
Dim listTitle As String = String.Empty
Dim listTotal, webTotal, grandTotal As Long
For Each row As DataRow In results.Rows
Dim curWeb As String = CType(row("ProjectProperty.Title"), String)
Dim curList As String = CType(row("ListProperty.Title"), String)
If webTitle <> curWeb Then
listTotal = PrintSubTotal(listTotal, listTitle)
listTitle = String.Empty
webTotal = PrintSubTotal(webTotal, webTitle)
webTitle = curWeb
Console.WriteLine(vbCrLf + "Web site: {0}", webTitle)
End If
If listTitle <> curList Then
listTotal = PrintSubTotal(listTotal, listTitle)
listTitle = curList
End If
' Get the size of the current file.
Dim fileSize As Integer = Convert.ToInt32(row(fileSizeDisplayId))
' Add it to the totals.
listTotal += fileSize
webTotal += fileSize
grandTotal += fileSize
Next
listTotal = PrintSubTotal(listTotal, listTitle)
webTotal = PrintSubTotal(webTotal, webTitle)
Console.WriteLine(vbCrLf + "Grand total: {0}", grandTotal)
End Using
End Using
Console.ReadLine()
End Sub
Function PrintSubTotal(ByVal total As Long, ByVal name As String) As Long
If total <> 0 Then
Console.WriteLine(" Total file size for {0} is {1}.", name, total)
End If
Return 0
End Function
End Module
using System;
using System.Data;
using Microsoft.SharePoint;
namespace Test
{
class ConsoleApp
{
static void Main(string[] args)
{
using (SPSite site = new SPSite("https://localhost"))
{
using (SPWeb web = site.OpenWeb())
{
SPSiteDataQuery query = new SPSiteDataQuery();
// Query all Web sites in this site collection.
query.Webs = "<Webs Scope=\"SiteCollection\">";
// Ask for document libraries.
query.Lists = "<Lists BaseType=\"1\" />";
// Get IDs for fields used in the query.
string fileSizeId = SPBuiltInFieldId.File_x0020_Size.ToString("B");
string fileSizeDisplayId = SPBuiltInFieldId.FileSizeDisplay.ToString("B");
// Select the records.
query.Query = "<Where><Gt>";
query.Query += "<FieldRef ID=\"" + fileSizeId + "\" />";
query.Query += "<Value Type=\"Number\">0</Value>";
query.Query += "</Gt></Where>";
// Specify the view fields.
query.ViewFields = "<FieldRef Name=\"" + fileSizeDisplayId + "\" />";
query.ViewFields += "<ProjectProperty Name=\"Title\" />";
query.ViewFields += "<ListProperty Name=\"Title\" />";
// Submit the query.
DataTable results = web.GetSiteData(query);
// Process the results.
string webTitle = string.Empty, listTitle = string.Empty;
long listTotal = 0, webTotal = 0, grandTotal = 0;
foreach (DataRow row in results.Rows)
{
string curWeb = row["ProjectProperty.Title"] as string;
string curList = row["ListProperty.Title"] as string;
if (webTitle != curWeb)
{
listTotal = PrintSubTotal(listTotal, listTitle);
listTitle = string.Empty;
webTotal = PrintSubTotal(webTotal, webTitle);
webTitle = curWeb;
Console.WriteLine("\nWeb site: {0}", webTitle);
}
if (listTitle != curList)
{
listTotal = PrintSubTotal(listTotal, listTitle);
listTitle = curList;
}
// Get the size of the current file.
int fileSize = Convert.ToInt32(row[fileSizeDisplayId]);
// Add it to the totals.
listTotal += fileSize;
webTotal += fileSize;
grandTotal += fileSize;
}
listTotal = PrintSubTotal(listTotal, listTitle);
webTotal = PrintSubTotal(webTotal, webTitle);
Console.WriteLine("\nGrand total: {0}", grandTotal);
}
}
Console.ReadLine();
}
private static long PrintSubTotal(long total, string name)
{
if (total != 0)
Console.WriteLine(" Total file size for {0} is {1}.", name, total);
return 0;
}
}
}