Compartilhar via


SPSiteDataQuery.Webs property

Obtém ou define o XML interno que especifica quais sites da Web para incluir na consulta. conforme especificações de HttpCachePolicy o atributo Scope na marca Webs na consulta. Por padrão, a consulta considera o site da Web atual, ou seja, o site do qual o

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaração
Public Property Webs As String
    Get
    Set
'Uso
Dim instance As SPSiteDataQuery
Dim value As String

value = instance.Webs

instance.Webs = value
public string Webs { get; set; }

Property value

Type: System.String
Uma cadeia de caracteres contendo o XML interno que especifica os sites para incluir.

Comentários

A propriedade Webs Especifica quais sites da Web para incluir na consulta. Por padrão, a consulta considera apenas o site da Web do qual o método GetSiteData foi invocado.

Você poderá ampliar o escopo da consulta, definindo a propriedade Webs como uma cadeia de caracteres contendo uma marca de Webs e um atributo Scope . Valores possíveis do atributo Scope incluem Recursive e SiteCollection.

<Webs Scope="Recursive" />

<Webs Scope="SiteCollection" />

Quando o atributo Scope é definido como Recursive, a consulta considera atual site e todos os subsites do site atual.

Quando o atributo Scope é definido como SiteCollection, a consulta considera todos os sites que estão no mesmo conjunto de sites do site atual. Os dois de valores de atributo, isso é mais inclusive.

Examples

O exemplo a seguir é um aplicativo de console que recupera informações sobre o tamanho de cada arquivo em cada biblioteca de documentos em um conjunto de sites. Em seguida, o aplicativo itera através dos dados e imprime totais nos níveis de conjunto de sites, sites da Web e biblioteca.

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

Ver também

Referência

SPSiteDataQuery class

SPSiteDataQuery members

Microsoft.SharePoint namespace