Freigeben über


SPSiteDataQuery.Query-Eigenschaft

Ruft ab oder legt den inneren XML-Code, der die Abfrage definiert.

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

Syntax

'Declaration
Public Property Query As String
    Get
    Set
'Usage
Dim instance As SPSiteDataQuery
Dim value As String

value = instance.Query

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

Eigenschaftswert

Typ: System.String
Eine Zeichenfolge, die ein Fragment in Collaborative Application Markup Language enthält, die die Abfrage definiert.

Hinweise

Der Wert dieser Eigenschaft entspricht den inneren XML-Code des Query -Elements in CAML, mit Ausnahme der öffnenden und schließenden-Tags <Query></Query> .

Das Where -Element der Abfragezeichenfolge gibt den Filter, der bestimmt, welche Elemente im Resultset zurückgegeben werden. Die Syntax ist dieselbe wie die Syntax für die Query -Eigenschaft eines SPQuery -Objekts verwendet.

Das OrderBy -Element der Abfragezeichenfolge gibt die Sortierreihenfolge der Elemente im Resultset zurückgegeben. Die Syntax ist dieselbe wie die Syntax für die Query -Eigenschaft eines SPQuery -Objekts verwendet, aber unterstützt darüber hinaus auch die Unterelemente ListProperty und ProjectProperty . Eine Beschreibung der folgenden Unterelemente finden Sie unter der ViewFields -Eigenschaft.

Elemente, die ein Feld nicht enthalten, die in der Abfragezeichenfolge Where oder OrderBy -Elementen bezeichnet wird, sind nicht im Resultset enthalten.

Das folgende Markup zeigt eine Beispiel-Abfragezeichenfolge, die zum Lesen von erleichtern formatiert wurde.

<Where>
  <Eq>
    <FieldRef Name="AssignedTo"/>
    <Value Type="Integer">
      <UserID/>
    </Value>
  </Eq>
</Where>
<OrderBy>
  <FieldRef Name="Priority"/>
  <ProjectProperty Name="Title" />
  <ListProperty Name="Title" />
</OrderBy>

Beispiele

Das folgende Beispiel ist eine Konsolenanwendung, die alle Aufgabenlisten in einer Websitesammlung abfragt. Die Abfragezeichenfolge markiert Aufgaben, die dem aktuellen Benutzer, sortiert nach Fälligkeitsdatum zugewiesen sind. Nachdem die Ergebnisse zurückgegeben werden, wird die Anwendung ein Berichts in der Konsole gedruckt.

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

            ' Get IDs for all fields used in the query.
            Dim assignedToId As String = SPBuiltInFieldId.AssignedTo.ToString("B")
            Dim taskDueDateId As String = SPBuiltInFieldId.TaskDueDate.ToString("B")
            Dim titleId As String = SPBuiltInFieldId.Title.ToString("B")
            Dim taskStatusId As String = SPBuiltInFieldId.TaskStatus.ToString("B")
            Dim percentCompleteId As String = SPBuiltInFieldId.PercentComplete.ToString("B")

            ' Define the data selection.
            Dim where As String = "<Where><Eq>"
            where += "<FieldRef ID='" + assignedToId + "' />"
            where += "<Value Type='Integer'><UserID/></Value>"
            where += "</Eq></Where>"

            ' Define the sort order.
            Dim orderBy As String = "<OrderBy>"
            orderBy += "<FieldRef ID='" + taskDueDateId + "' />"
            orderBy += "</OrderBy>"

            ' Set the query string.
            query.Query = where + orderBy

            ' Query task lists.
            query.Lists = "<Lists ServerTemplate='107'/>"

            ' Specify the view fields.
            query.ViewFields = "<FieldRef ID='" + titleId + "' />"
            query.ViewFields += "<FieldRef ID='" + taskDueDateId + "' Nullable='TRUE' />"
            query.ViewFields += "<FieldRef ID='" + taskStatusId + "' Nullable='TRUE' />"
            query.ViewFields += "<FieldRef ID='" + percentCompleteId + "' Nullable='TRUE' />"

            ' Query all Web sites in this site collection.
            query.Webs = "<Webs Scope='SiteCollection'>"

            ' Run the query.
            Dim results As DataTable = web.GetSiteData(query)

            ' Print the results.
            Console.WriteLine("{0, -10} {1, -30} {2, -30} {3}", "Date Due", "Task", "Status", "% Complete")
            Dim row As DataRow
            For Each row In results.Rows
               ' Extract column values from the data table.
               Dim dueDate As String = CType(row(taskDueDateId), String)
               Dim task As String = CType(row(titleId), String)
               Dim status As String = CType(row(taskStatusId), String)
               Dim percentComplete As String = CType(row(percentCompleteId), String)

               ' Convert the due date to a short date.
               Dim dt As DateTime
               Dim hasDate As Boolean = DateTime.TryParse(dueDate, dt)
               If hasDate Then
                  dueDate = dt.ToShortDateString()
               Else
                  dueDate = String.Empty
               End If

               ' Convert the PercentComplete field value to a percentage.
               Dim pct As Decimal
               Dim hasValue As Boolean = Decimal.TryParse(percentComplete, pct)
               If hasValue Then
                  percentComplete = pct.ToString("P0")
               Else
                  percentComplete = "0 %"
               End If

               ' Print a line.
               Console.WriteLine("{0, -10} {1, -30} {2, -30} {3, 10}", dueDate, task, status, percentComplete)
            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();

               // Get IDs for all fields used in the query.
               string assignedToId = SPBuiltInFieldId.AssignedTo.ToString("B");
               string taskDueDateId = SPBuiltInFieldId.TaskDueDate.ToString("B");
               string titleId = SPBuiltInFieldId.Title.ToString("B");
               string taskStatusId = SPBuiltInFieldId.TaskStatus.ToString("B");
               string percentCompleteId = SPBuiltInFieldId.PercentComplete.ToString("B");

               // Define the data selection.
               string where = "<Where><Eq>";
               where += "<FieldRef ID='" + assignedToId + "' />";
               where += "<Value Type='Integer'><UserID/></Value>";
               where += "</Eq></Where>";

               // Define the sort order.
               string orderBy = "<OrderBy>";
               orderBy += "<FieldRef ID='" + taskDueDateId + "' />";
               orderBy += "</OrderBy>";

               // Set the query string.
               query.Query = where + orderBy;

               // Query task lists.
               query.Lists = "<Lists ServerTemplate='107'/>";

               // Specify the view fields.
               query.ViewFields = "<FieldRef ID='" + titleId + "' />";
               query.ViewFields += "<FieldRef ID='" + taskDueDateId + "' Nullable='TRUE' />";
               query.ViewFields += "<FieldRef ID='" + taskStatusId + "' Nullable='TRUE' />";
               query.ViewFields += "<FieldRef ID='" + percentCompleteId + "' Nullable='TRUE' />";

               // Query all Web sites in this site collection.
               query.Webs = "<Webs Scope='SiteCollection'>";

               // Run the query.
               DataTable results = web.GetSiteData(query);

               // Print the results.
               Console.WriteLine("{0, -10} {1, -30} {2, -30} {3}", "Date Due", "Task", "Status", "% Complete");
               foreach (DataRow row in results.Rows)
               {
                  // Extract column values from the data table.
                  string dueDate = (string)row[taskDueDateId];
                  string task = (string)row[titleId];
                  string status = (string)row[taskStatusId];
                  string percentComplete = (string)row[percentCompleteId];

                  // Convert the due date to a short date string.
                  DateTime dt;
                  bool hasDate = DateTime.TryParse(dueDate, out dt);
                  if (hasDate)
                     dueDate = dt.ToShortDateString();
                  else
                     dueDate = String.Empty;

                  // Convert the PercentComplete field value to a percentage.
                  decimal pct;
                  bool hasValue = decimal.TryParse(percentComplete, out pct);
                  if (hasValue)
                     percentComplete = pct.ToString("P0");
                  else
                     percentComplete = "0 %";

                  // Print a line.
                  Console.WriteLine("{0, -10} {1, -30} {2, -30} {3, 10}", dueDate, task, status, percentComplete);
               }
            }
         }
         Console.ReadLine();
      }
   }
}

Siehe auch

Referenz

SPSiteDataQuery Klasse

SPSiteDataQuery-Member

Microsoft.SharePoint-Namespace