SPSiteDataQuery-Klasse
Stellt eine Abfrage, die in mehreren Listen in unterschiedlichen Websites in der gleichen Websitesammlung ausgeführt werden kann.
Vererbungshierarchie
System.Object
Microsoft.SharePoint.SPSiteDataQuery
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public NotInheritable Class SPSiteDataQuery
'Usage
Dim instance As SPSiteDataQuery
public sealed class SPSiteDataQuery
Hinweise
Sie können eine Instanz dieser Klasse zum Abrufen von Daten aus der ausgewählten Listen oder aus allen Listen in der aktuellen Websitesammlung verwenden. Geben Sie den Bereich der Abfrage, indem die Webs -Eigenschaft festlegen. Geben Sie die Listen zur Teilnahme an der Abfrage durch Festlegen der Lists -Eigenschaft und der Felder, die durch Festlegen der ViewFields -Eigenschaft zurückgegeben. Steuerelementauswahl Daten und der Order by-die Query -Eigenschaft festlegen.
Um die Abfrage auszuführen, übergeben Sie das SPSiteDataQuery -Objekt an die GetSiteData(SPSiteDataQuery) -Methode, die ein mit Datenzeilen, die das Ergebnis der Abfrage darstellen DataTable -Objekt zurückgibt. Jede DataRow -Objekts in der Auflistung DataTable.Rows stellt ein einzelnes Element, das die Abfrage entspricht. Jede DataColumn -Objekts in der Auflistung DataTable.Columns stellt ein Feld, das in der Eigenschaft ViewFields angefordert wird, und den Namen der Spalte gleich dem Wert des Attributs Name für dieses Feld. Darüber hinaus enthält die Datentabelle eine Spalte mit dem Namen WebId, die die Website angibt, die jedes Element enthält, mit dem Namen ListId, die die Liste, die jedes Element enthält angibt, in einer Spalte und einer Spalte mit dem Namen ID, die jedes Element identifiziert.
Beispiele
Im folgende Beispiel wird ein Webpart, das alle Listen Abfragen, die mit den Kontakten erstellt wurden Listenvorlage an einer beliebigen Stelle in der Websitesammlung, ruft die ersten und letzten Namen jeder Kontakt und zeigt, die Informationen in einer GridView steuern.
Note that if you compile the example code, you can deploy the Web Part simply by copying the compiled assembly to the bin directory of the Web application. If you choose that method of deployment, be sure your project includes a reference to Microsoft.SharePoint.Security.dll. Then add the Web Part to the SafeControls list in the web.config file and elevate the Web application's trust level to WSS_Medium. For more information, see Deploying Web Parts in Windows SharePoint Services and Securing Web Parts in Windows SharePoint Services.
Achtung
Der Enumerationswert für Contacts ist 105.
Imports System
Imports System.Data
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports Microsoft.SharePoint
Public Class ContactViewer
Inherits WebPart
Private grid As GridView
Protected Overrides Sub CreateChildControls()
MyBase.CreateChildControls()
' Add an instance of the grid control.
Me.grid = New GridView()
Controls.Add(Me.grid)
End Sub
Protected Overrides Sub RenderContents(ByVal writer As System.Web.UI.HtmlTextWriter)
Dim web As SPWeb = SPContext.Current.Web
Dim query As SPSiteDataQuery = New SPSiteDataQuery()
' Ask for all lists created from the contacts template.
query.Lists = "<Lists ServerTemplate='105' />"
' Get the Title (Last Name) and FirstName fields.
query.ViewFields = "<FieldRef Name='Title' />" + _
"<FieldRef Name='FirstName' Nullable='TRUE' Type='Text'/>"
' Note that setting the Nullable attribute to TRUE
' causes an empty value to be returned for lists that
' do not include the FirstName column. The default is
' to skip a list that does not include the column.
' Set the sort order.
query.Query = "<OrderBy>" + _
"<FieldRef Name='Title' />" + _
"</OrderBy>"
' Query all Web sites in this site collection.
query.Webs = "<Webs Scope='SiteCollection' />"
Dim dt As DataTable = web.GetSiteData(query)
Dim dv As DataView = New DataView(dt)
' Set up the field bindings.
Dim boundField As BoundField = New BoundField()
boundField.HeaderText = "Last Name"
boundField.DataField = "Title"
Me.grid.Columns.Add(boundField)
boundField = New BoundField()
boundField.HeaderText = "First Name"
boundField.DataField = "FirstName"
Me.grid.Columns.Add(boundField)
Me.grid.AutoGenerateColumns = False
Me.grid.DataSource = dv
Me.grid.DataBind()
Me.grid.AllowSorting = True
Me.grid.HeaderStyle.Font.Bold = True
Me.grid.RenderControl(writer)
End Sub
End Class
using System;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
namespace SampleWebParts
{
public class ContactViewer : WebPart
{
private GridView grid;
protected override void CreateChildControls()
{
base.CreateChildControls();
// Add an instance of the grid control.
this.grid = new GridView();
this.Controls.Add(this.grid);
}
protected override void RenderContents(HtmlTextWriter writer)
{
SPWeb web = SPContext.Current.Web;
SPSiteDataQuery query = new SPSiteDataQuery();
//Ask for all lists created from the contacts template.
query.Lists = "<Lists ServerTemplate=\"105\" />";
// Get the Title (Last Name) and FirstName fields.
query.ViewFields = "<FieldRef Name=\"Title\" />" +
"<FieldRef Name=\"FirstName\" Nullable=\"TRUE\" Type=\"Text\"/>";
// Note that setting the Nullable attribute to TRUE
// causes an empty value to be returned for lists that
// do not include the FirstName column. The default is
// to skip a list that does not include the column.
// Set the sort order.
query.Query = "<OrderBy>" +
"<FieldRef Name=\"Title\" />" +
"</OrderBy>";
// Query all Web sites in this site collection.
query.Webs = "<Webs Scope=\"SiteCollection\" />";
DataTable dt = web.GetSiteData(query);
DataView dv = new DataView(dt);
// Set up the field bindings.
BoundField boundField = new BoundField();
boundField.HeaderText = "Last Name";
boundField.DataField = "Title";
this.grid.Columns.Add(boundField);
boundField = new BoundField();
boundField.HeaderText = "First Name";
boundField.DataField = "FirstName";
this.grid.Columns.Add(boundField);
this.grid.AutoGenerateColumns = false;
this.grid.DataSource = dv;
this.grid.DataBind();
this.grid.AllowSorting = true;
this.grid.HeaderStyle.Font.Bold = true;
this.grid.RenderControl(writer);
}
}
}
Threadsicherheit
Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Die Threadsicherheit von Instanzmembern ist nicht gewährleistet.