SPSiteDataQuery.ViewFields-Eigenschaft
Ruft ab oder legt den inneren XML-Code, der die verwendeten Ansichtsfelder in der Abfrage angibt.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public Property ViewFields As String
Get
Set
'Usage
Dim instance As SPSiteDataQuery
Dim value As String
value = instance.ViewFields
instance.ViewFields = value
public string ViewFields { get; set; }
Eigenschaftswert
Typ: System.String
Eine Zeichenfolge, die ein Fragment in Collaborative Application Markup Language enthält, der die Anzeigefelder angibt. Diese Zeichenfolge entspricht den inneren XML-Code des ViewFields -Elements in Collaborative Application Markup Language (CAML).
Hinweise
Jedes Feld wird durch ein Tag FieldRef dargestellt. Verwenden Sie das Name oder ID -Attribut, um das Feld zu identifizieren.
Das Tag FieldRef hat ein optionales Type -Attribut, das verwendet werden kann, um den Datentyp des Felds angeben. Wenn das Attribut festgelegt ist, gelten nur für Listen, die das Feld ist des angegebenen Typs deklarieren von der Abfrage. Beispiel:
<ViewFields>
<FieldRef Name="Title" Type="Text" />
<FieldRef Name="PercentComplete" Type="Number" />
</ViewFields>
Enthält eine Liste in der Abfrage enthalten keine eines der Felder in das Tag ViewFields angegebenen Standardmäßig werden keine Elemente aus der Liste in den Ergebnissen angezeigt. Um einen leeren Wert für ein Feld auf Elemente in Listen zurückzugeben, die dieses Feld nicht enthalten, legen Sie das Attribut Nullable auf TRUE auf dieses Tag FieldRef . (Für Felder Lookup und User , müssen Sie auch das Attribut Type festgelegt.) Beispiel:
<ViewFields>
<FieldRef Name="AssignedTo" Type="User" Nullable="TRUE" />
</ViewFields>
Listeneigenschaften wie Title können in der Abfrage mit dem Tag ListProperty enthalten sein. Das Name -Attribut des Tags ListProperty identifiziert die bestimmte-Eigenschaft und kann einen der folgenden Werte enthalten:
Title – der Titel der Liste, die das Element enthält.
ListId – die GUID der Liste, die das Element enthält.
DraftVersionVisibility – gibt an, ob Nebenversionen von Dokumenten für Leser, Autoren und genehmigende Personen sichtbar sind.
Wert
Description
0
Nebenversionen sind für Leser, Autoren und genehmigende Personen sichtbar.
1
Nebenversionen sind für Autoren und genehmigende Personen sichtbar.
2
Nebenversionen sind nur für genehmigende Personen sichtbar.
Site-Standardeigenschaften können mithilfe des ProjectProperty -Tags enthalten sein. Das Name -Attribut des Tags ProjectProperty identifiziert die bestimmte-Eigenschaft und kann einen der folgenden Werte enthalten:
Title – der Titel der Website, die das Element enthält.
WebId – die GUID der Website, die das Element enthält.
Für jedes Element gibt im folgenden Beispiel wird der Titel des Elements, das enthaltende Listentitel und der enthaltenden Website Titel zurück. Beispiel:
<ViewFields>
<FieldRef Name="Title" />
<ProjectProperty Name="Title" />
<ListProperty Name="Title" />
</ViewFields>
Beispiele
Das folgende Beispiel ist eine Konsolenanwendung, die alle Tasks fragt Listen in einer Websitesammlung und füllt das Resultset mit Daten aus drei Anzeigefelder. Nach dem Abrufen von Daten, druckt die Anwendung einen Bericht in der Konsole angezeigt.
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();
}
}
}