Свойство 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();
}
}
}