SPSiteDataQuery class
Representa uma consulta que pode ser executada em várias listas de vários sites no mesmo conjunto de sites da Web.
Inheritance hierarchy
System.Object
Microsoft.SharePoint.SPSiteDataQuery
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaração
Public NotInheritable Class SPSiteDataQuery
'Uso
Dim instance As SPSiteDataQuery
public sealed class SPSiteDataQuery
Comentários
Você pode usar uma instância dessa classe para recuperar dados a partir de listas selecionadas ou todas as listas no conjunto de sites atual. Especifica o escopo da consulta, definindo a propriedade Webs . Especifique as listas para participar da consulta, definindo a propriedade Lists e os campos para retornar, definindo a propriedade ViewFields . Seleção de dados de controle e em ordem, definindo a propriedade Query .
Para executar a consulta, passe o objeto SPSiteDataQuery ao método GetSiteData(SPSiteDataQuery) , que retorna um objeto DataTable contendo as linhas de dados que representam o resultado da consulta. Cada objeto DataRow na coleção DataTable.Rows representa um único item que atenda a consulta. Cada objeto de DataColumn na coleção DataTable.Columns representa um campo que é solicitado na propriedade ViewFields e o nome da coluna é igual ao valor do atributo Name para esse campo. Além disso, a tabela de dados contém uma coluna chamada WebId, que identifica o site que contém a cada item, uma coluna chamada ListId, que identifica a lista que contém a cada item e uma coluna chamada ID, que identifica a cada item.
Examples
O exemplo a seguir é uma Web Part que todas as listas que foram criadas com os contatos do modelo de lista em qualquer lugar no conjunto de sites, recupera os nomes e o sobrenome de cada contato e exibe informações em um GridView controlar as consultas.
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.
Aviso
O valor de enumeração para Contacts é 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);
}
}
}
Thread safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.