Partager via


SPSiteDataQuery.Webs - Propriété

Obtient ou définit le XML interne qui spécifie quels sites Web à inclure dans la requête. comme spécifié par l'attribut Scope sur la balise Webs dans la requête. Par défaut, la requête considère que le site Web en cours, autrement dit, le site Web à partir de laquelle le

Espace de noms :  Microsoft.SharePoint
Assembly :  Microsoft.SharePoint (dans Microsoft.SharePoint.dll)

Syntaxe

'Déclaration
Public Property Webs As String
    Get
    Set
'Utilisation
Dim instance As SPSiteDataQuery
Dim value As String

value = instance.Webs

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

Valeur de propriété

Type : System.String
Chaîne contenant le XML interne qui spécifie les sites Web à inclure.

Remarques

La propriété Webs indique les sites Web à inclure dans la requête. Par défaut, la requête ne considère que le site Web à partir duquel la méthode GetSiteData a été appelée.

Vous pouvez élargir la portée de la requête en affectant à la propriété Webs une chaîne contenant une balise Webs et un attribut Scope . Les valeurs possibles de l'attribut Scope sont Recursive et SiteCollection.

<Webs Scope="Recursive" />

<Webs Scope="SiteCollection" />

Lorsque l'attribut Scope est Recursive, la requête tient compte en cours site Web et tous les sous-sites du site Web en cours.

Lorsque l'attribut Scope est définie sur SiteCollection, la requête prend en compte tous les sites Web qui se trouvent dans la même collection de sites que le site Web actif. Les deux valeurs d'attribut, il s'agit le plus inclusif.

Exemples

L'exemple suivant est une application console qui extrait des informations sur la taille de chaque fichier dans chaque bibliothèque de documents dans une collection de sites. L'application parcourt les données, puis imprime les totaux à la bibliothèque, site Web et des niveaux de collection de sites.

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

Voir aussi

Référence

SPSiteDataQuery classe

SPSiteDataQuery - Membres

Microsoft.SharePoint - Espace de noms