Свойство SPSiteDataQuery.ViewFields

Получает или задает внутреннее XML, который определяет вид поля, которые используются в запросе.

Пространство имен:  Microsoft.SharePoint
Сборка:  Microsoft.SharePoint (в Microsoft.SharePoint.dll)

Синтаксис

'Декларация
Public Property ViewFields As String
    Get
    Set
'Применение
Dim instance As SPSiteDataQuery
Dim value As String

value = instance.ViewFields

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

Значение свойства

Тип: System.String
Строка, содержащая фрагмент Collaborative Application Markup Language , указывающее поля представления. Эта строка соответствует внутреннему XML-элемент ViewFields в Язык CAML.

Замечания

В каждом поле представлены FieldRef тег. Атрибут Name или ID используется для идентификации поля.

Тег FieldRef имеет атрибут необязательно Type , который можно использовать для указания типа данных поля. Если для атрибута, только списки, объявить это поле с указанным типом считаются по запросу. Пример:

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

По умолчанию Если список включенных в запрос содержит одно из указанных полей в теге ViewFields не элементы этого списка отображаются в результатах. Возвращает пустое значение для поля на элементов в списках, которые не содержат поля, присвойте атрибуту NullableTRUE на FieldRef тега. (Для полей Lookup и User , также необходимо задать атрибут Type .) Пример:

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

Свойства списка, такие как Title могут быть включены в запрос с тегом ListProperty . Атрибут Name тега ListProperty идентифицирует определенное свойство и может содержать одно из следующих значений:

  • Title — заголовок списка, который содержит элемент.

  • ListId --идентификатор GUID списка, который содержит элемент.

  • DraftVersionVisibility — указывает, являются ли видимым для читателей авторы и утверждающие дополнительный номер версии документов.

    Значение

    Описание

    0

    Дополнительный номер версии видны читателям, авторы и утверждающие.

    1

    Дополнительный номер версии видны авторы и утверждающие.

    2

    Дополнительный номер версии видны только утверждающие.

Свойства сайта может войти с помощью тега ProjectProperty . Атрибут Name тега ProjectProperty идентифицирует определенное свойство и может содержать одно из следующих значений:

  • Title — заголовок веб-сайта, который содержит элемент.

  • WebId --идентификатор GUID веб-сайта, который содержит элемент.

Для каждого элемента в следующем примере возвращается название элемента, содержащего список заголовка и заголовка с веб-сайта. Пример:

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

Примеры

Следующий пример является консольное приложение, которое запрашивает все задачи, приведены в семействе сайтов и заполняет результирующий набор с данными из трех полей в представление. После извлечения данных, приложение выведет отчет на консоль.

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

См. также

Справочные материалы

SPSiteDataQuery класс

Элементы SPSiteDataQuery

Пространство имен Microsoft.SharePoint