Compartilhar via


SPSiteDataQuery.ViewFields property

Obtém ou define o XML interno que especifica os campos do modo de exibição usados na consulta.

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

Syntax

'Declaração
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; }

Property value

Type: System.String
Uma cadeia de caracteres que contém um fragmento em Collaborative Application Markup Language que especifica os campos do modo de exibição. Esta cadeia de caracteres corresponde ao XML interno do elemento ViewFields no Collaborative Application Markup Language (CAML).

Comentários

Cada campo é representado por uma marca de FieldRef . Use o atributo Name ou ID para identificar o campo.

A marca FieldRef tem um atributo opcional Type que pode ser usado para especificar o tipo de dados do campo. Quando o atributo for definido, somente listas que declara o campo a ser do tipo especificado serão consideradas pela consulta. Exemplo:

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

Por padrão, se uma lista incluída na consulta não contiver um dos campos especificados na marca ViewFields , nenhum item dessa lista aparecerá nos resultados. Para retornar um valor vazio para um campo em itens em listas que não contêm desse campo, defina o atributo de Nullable para TRUE que marca FieldRef . (Para campos Lookup e User , você também deve definir o atributo Type .) Exemplo:

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

Propriedades de lista como Title podem ser incluídas na consulta com a marca ListProperty . O atributo Name da marca ListProperty identifica a propriedade específica e pode conter um dos seguintes valores:

  • Title – o título da lista que contém o item.

  • ListId – o GUID da lista que contém o item.

  • DraftVersionVisibility – indica se o versões secundárias de documentos são visíveis aos leitores, autores ou aprovadores.

    Valor

    Descrição

    0

    Versões secundárias são visíveis aos leitores, autores e aprovadores.

    1

    Versões secundárias são visíveis aos autores e aprovadores.

    2

    Versões secundárias são visíveis apenas para aprovadores.

Propriedades do site podem ser incluídas usando a marca ProjectProperty . O atributo Name da marca ProjectProperty identifica a propriedade específica e pode conter um dos seguintes valores:

  • Title – o título do site da Web que contém o item.

  • WebId – o GUID do site da Web que contém o item.

Para cada item, o exemplo a seguir retorna o título do item, título da lista que contêm e título do site da Web que o contém. Exemplo:

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

Examples

O exemplo a seguir é um aplicativo de console que todas as tarefas de consulta lista em um conjunto de sites e preenche o conjunto de resultados com dados de três campos do modo de exibição. Após recuperar os dados, o aplicativo imprime um relatório no 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();
      }
   }
}

Ver também

Referência

SPSiteDataQuery class

SPSiteDataQuery members

Microsoft.SharePoint namespace