Share via


de la propiedad SPSiteDataQuery.ViewFields

Obtiene o establece el XML interno que especifica los campos de vista utilizados en la consulta.

Espacio de nombres:  Microsoft.SharePoint
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
Public Property ViewFields As String
    Get
    Set
'Uso
Dim instance As SPSiteDataQuery
Dim value As String

value = instance.ViewFields

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

Valor de propiedad

Tipo: System.String
Una cadena que contiene un fragmento en Lenguaje de marcado de aplicaciones de colaboración que especifica los campos de la vista. Esta cadena se corresponde con el XML interno del elemento ViewFields en Lenguaje de marcado de aplicaciones de colaboración (CAML).

Comentarios

Cada campo está representado por una etiqueta de FieldRef . Use el atributo Name o ID para identificar el campo.

La etiqueta de FieldRef tiene un atributo opcional Type que se pueden usar para especificar el tipo de datos del campo. Cuando se establece el atributo, se consideran sólo las listas que declaran el campo sea del tipo especificado por la consulta. Ejemplo:

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

De forma predeterminada, si una lista que se incluyen en la consulta no contiene uno de los campos especificados en la etiqueta ViewFields , no hay elementos de esa lista aparecen en los resultados. Para devolver un valor vacío para un campo en los elementos en las listas que no contienen ese campo, establezca el atributo de Nullable a TRUE en esa etiqueta FieldRef . (Para los campos Lookup y User , también debe establecer el atributo Type .) Ejemplo:

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

Propiedades de la lista como Title puede incluirse en la consulta con la etiqueta ListProperty . El atributo Name de la etiqueta ListProperty identifica la propiedad específica y puede contener uno de los siguientes valores:

  • Title --el título de la lista que contiene el elemento.

  • ListId --el GUID de la lista que contiene el elemento.

  • DraftVersionVisibility : indica si las versiones secundarias de documentos están visibles para los lectores, los autores o los aprobadores.

    Value

    Description

    0

    Las versiones secundarias están visibles para los lectores, los autores y los aprobadores.

    1

    Las versiones secundarias están visibles para los autores y los aprobadores.

    2

    Las versiones secundarias sólo son visibles para los aprobadores.

Propiedades de sitio se pueden incluir mediante el uso de la etiqueta ProjectProperty . El atributo Name de la etiqueta ProjectProperty identifica la propiedad específica y puede contener uno de los siguientes valores:

  • Title --el título del sitio Web que contiene el elemento.

  • WebId --el GUID del sitio Web que contiene el elemento.

Para cada elemento, en el ejemplo siguiente se devuelve el título del elemento, título de la lista que contiene y título del sitio Web que lo contiene. Ejemplo:

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

Ejemplos

En el siguiente ejemplo es una aplicación de consola que consulta todas las tareas que se enumera en una colección de sitios y rellena el conjunto de resultados con datos de tres campos de la vista. Después de recuperar los datos, la aplicación imprime un informe en la consola.

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

Vea también

Referencia

clase SPSiteDataQuery

Miembros SPSiteDataQuery

Espacio de nombres Microsoft.SharePoint