SPSiteDataQuery.Webs property
取得或設定會指定要在查詢中包含哪些網站的內部 XML。在查詢Webs tag Scope屬性所指定。根據預設,該查詢會考慮目前的網站,也就是從中網站
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
含有會指定要包含網站的內部 XML 字串。
備註
Webs屬性會指定要包含在查詢中的網站。根據預設,該查詢會考慮僅限網站從中上次叫用GetSiteData方法。
您可以將Webs屬性設定為包含Webs標籤和Scope屬性的字串,以擴大查詢的範圍。Scope屬性的可能值包括Recursive和SiteCollection。
<Webs Scope="Recursive" />
<Webs Scope="SiteCollection" />
當Scope屬性設為Recursive時,該查詢會考慮目前網站與目前網站的所有子網站。
當Scope屬性設為SiteCollection時,該查詢會考慮目前網站相同網站集合中的所有網站。兩個屬性值,這是更 (含)。
Examples
下面範例會擷取在網站集合中每個文件庫中的每個檔案的大小的相關資訊的主控台應用程式。應用程式再逐一資料,並會列印在文件庫、 網站和網站集合層級的總計。
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;
}
}
}