Share via


SPSiteDataQuery.ViewFields - Propriété

Obtient ou définit le XML interne qui spécifie les champs d'affichage utilisés dans la requête.

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

Syntaxe

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

value = instance.ViewFields

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

Valeur de propriété

Type : System.String
Chaîne qui contient un fragment en Collaborative Application Markup Language qui spécifie les champs d'affichage. Cette chaîne correspond à du XML interne de l'élément ViewFields dans CAML (Collaborative Application Markup Language).

Remarques

Chaque champ est représenté par une balise FieldRef . Utilisez l'attribut Name ou ID pour identifier le champ.

La balise FieldRef est un attribut facultatif Type qui peut être utilisé pour spécifier le type de données du champ. Lorsque l'attribut est défini, seules les listes qui déclare le champ du type spécifié sont considérées par la requête. Exemple :

<ViewFields>
  <FieldRef Name="Title" Type="Text" />
  <FieldRef Name="PercentComplete" Type="Number" />
</ViewFields>

Par défaut, si une liste incluse dans la requête ne contient-elle pas un des champs spécifiés dans la balise ViewFields , aucun élément de la liste s'affichent dans les résultats. Pour retourner une valeur vide pour un champ sur les éléments dans les listes qui ne contiennent pas ce champ, définissez l'attribut Nullable à TRUE sur cette balise FieldRef . (Pour les champs Lookup et User , vous devez également définir l'attribut Type .) Exemple :

<ViewFields>
  <FieldRef Name="AssignedTo" Type="User" Nullable="TRUE" />
</ViewFields>

Propriétés de la liste telles que Title peut être inclus dans la requête avec la balise ListProperty . L'attribut Name de la balise ListProperty identifie la propriété spécifique et peut contenir une des valeurs suivantes :

  • Title --le titre de la liste qui contient l'élément.

  • ListId --le GUID de la liste qui contient l'élément.

  • DraftVersionVisibility – indique si les versions secondaires des documents sont visibles aux lecteurs, auteurs ou approbateurs.

    Valeur

    Description

    0

    Les versions mineures sont visibles aux lecteurs, auteurs et approbateurs.

    1

    Les versions mineures sont visibles par les auteurs et les approbateurs.

    2

    Les versions mineures ne sont visibles que pour les approbateurs.

Propriétés du site peuvent être incluses en utilisant la balise ProjectProperty . L'attribut Name de la balise ProjectProperty identifie la propriété spécifique et peut contenir une des valeurs suivantes :

  • Title --le titre du site Web qui contient l'élément.

  • WebId --le GUID du site Web qui contient l'élément.

Pour chaque élément, l'exemple suivant renvoie le titre de l'élément, titre de la liste et le titre du site Web contenant. Exemple :

<ViewFields>
  <FieldRef Name="Title" />
  <ProjectProperty Name="Title" />
  <ListProperty Name="Title" />
</ViewFields>

Exemples

L'exemple suivant est une application console qui interroge toutes les tâches répertorie dans une collection de sites et remplit le jeu de résultats avec des données de trois champs d'affichage. Après avoir récupéré les données, l'application imprime un rapport à la console.

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 lists created from the Tasks template.
            query.Lists = "<Lists ServerTemplate='107'/>"

            ' Specify the view fields.
            query.ViewFields = "<FieldRef Name='Title' Type='Text'/>"
            query.ViewFields += "<FieldRef Name='AssignedTo' Type='User' Nullable='TRUE' />"
            query.ViewFields += "<FieldRef Name='PercentComplete' Type='Number' Nullable='TRUE' />"

            ' Run the query.
            Dim results As DataTable = web.GetSiteData(query)

            ' Print the results.
            Console.WriteLine("{0, -30} {1, -30} {2}", "Task", "Assigned to", "% Complete")

            Dim row As DataRow
            For Each row In results.Rows

               ' Get the task name.
               Dim task As String = row("Title").ToString()

               ' Parse out the user's login name.
               Dim loginName As String = String.Empty
               Dim str() As String = row("AssignedTo").ToString().Split("#"c)
               If (str.Length > 1) Then
                  loginName = str(1)
               End If

               ' Get the percent complete.
               Dim percent As Decimal
               Dim hasValue As Boolean = _
                   Decimal.TryParse(CType(row("PercentComplete"), String), percent)
               If Not hasValue Then
                  percent = 0
               End If

               Console.WriteLine("{0, -30} {1, -30} {2, 10:P0}", task, loginName, percent)
            Next

         End Using
      End Using
      Console.ReadLine()
   End Sub
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 lists created from the Tasks template.
               query.Lists = "<Lists ServerTemplate='107'/>";

               // Specify the view fields.
               query.ViewFields = "<FieldRef Name='Title' Type='Text'/>";
               query.ViewFields += "<FieldRef Name='AssignedTo' Type='User' Nullable='TRUE' />";
               query.ViewFields += "<FieldRef Name='PercentComplete' Type='Number' Nullable='TRUE' />";

               // Run the query.
               DataTable results = web.GetSiteData(query);

               // Print the results.
               Console.WriteLine("{0, -30} {1, -30} {2}", "Task", "Assigned to", "% Complete");
               foreach (DataRow row in results.Rows)
               {
                  // Get the task name.
                  string task = row["Title"].ToString();

                  // Parse out the user's login name.
                  string loginName = String.Empty;
                  string[] str = row["AssignedTo"].ToString().Split('#');
                  if (str.Length > 1) loginName = str[1];

                  // Get the percent complete.
                  decimal percent;
                  bool hasValue = decimal.TryParse((string)row["PercentComplete"], out percent);
                  if (!hasValue) percent = 0;

                  Console.WriteLine("{0, -30} {1, -30} {2, 10:P0}", task, loginName, percent);
               }
            }
         }
         Console.ReadLine();
      }
   }
}

Voir aussi

Référence

SPSiteDataQuery classe

SPSiteDataQuery - Membres

Microsoft.SharePoint - Espace de noms