O Sharepoint 2007 vem com uma nova classe, muito útil, para executar CAML queries.
Devem estar a pensar, mas o Sharepoint 2003 também tinha a SPQuery 🙂 !

 A principal diferença é que esta nova classe permite efectuar queries que devolvam informação de todas as listas ou document libraries existentes nos sub sites ou de todos os sites de uma site collection.

Exemplo: Devolver os documentos adicionados a todas as document libraries de todos os nossos sites hoje.

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint.Utilities;
using System.Data;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
namespace TodaysDocuments
{
    public class TodaysDocuments: WebPart
    {
        protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
        {
            SPSite site = SPControl.GetContextSite(this.Context);
            SPWeb web = site.OpenWeb();
            SPSiteDataQuery qry = new SPSiteDataQuery();
            string date = SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Today);
            qry.Query = "<OrderBy><FieldRef Name='Title' /></OrderBy>" +
                       "<Where><Geq><FieldRef Name='Created' />" +
                       "<Value Type='DateTime'>" + date +
                       "</Value></Geq></Where>";
       
            qry.Lists = "<Lists ServerTemplate='101' />";
            qry.ViewFields = "<FieldRef Name='Title' />";
            qry.Webs = "<Webs Scope='SiteCollection' />";
            DataTable tbl = web.GetSiteData(qry);
            writer.Write("<b>Documents added today to the sites.</b><HR>");
            DataGrid grid = new DataGrid();
            grid.DataSource = tbl;
            grid.DataBind();
            grid.RenderControl(writer);
        }
    }
}

Este código foi retirado do blog de Patrick Tisseghem's Blog [MVP SharePoint]
Se repararem a linha, qry.Lists = "<Lists ServerTemplate='101' />", serve para que a query apenas devolva informação de document libraries.

Para além de usar o template id, também é possivel definir quais as listas, através do nome das mesmas, que se pretende pesquisar.

LEAVE A REPLY

Please enter your comment!
Please enter your name here