SPSiteDataQuery.Webs 属性

获取或设置指定哪些网站,以包含在查询中的内部 XML。指定在查询中的Webs标记Scope属性。默认情况下,查询考虑当前网站,即从其 Web 站点

命名空间:  Microsoft.SharePoint
程序集:  Microsoft.SharePoint(位于 Microsoft.SharePoint.dll 中)

语法

声明
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; }

属性值

类型:System.String
包含指定要包括的网站的内部 XML 的字符串。

备注

Webs属性指定要包含在查询的网站。默认情况下,查询将视为只有从中调用GetSiteData方法的网站。

可以通过将Webs属性设置为包含Webs标记和Scope属性的字符串来扩大查询的范围。Scope属性的可能值包括Recursive和SiteCollection。

<Webs Scope="Recursive" />

<Webs Scope="SiteCollection" />

查询时Scope属性设置为Recursive,考虑当前网站和当前网站的所有子网站。

当Scope属性设置为SiteCollection时,查询将视为中与当前网站位于同一网站集中的所有网站。两个属性值,这是更包容。

示例

下面的示例是一个控制台应用程序检索信息的网站集中的每个文档库中的每个文件的大小。应用程序然后循环访问数据,并打印在库、 网站和网站集级别的总计。

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;
      }
   }
}

另请参阅

引用

SPSiteDataQuery 类

SPSiteDataQuery 成员

Microsoft.SharePoint 命名空间