Fino alla versione 2.0 di SharePoint, l'unico modo per effettuare delle query all'interno delle liste o delle raccolte documenti, era quello di utilizzare la classe SPQuery. Questa classe però soffre di alcuni limiti abbastanza pesanti:
- Possibilità di interrogare una sola lista/raccolta documenti.
- Possibilità di interrogare una sola cartella all'interno della lista/raccolta documenti.
Il secondo limite in particolare era piuttosto vincolante e costringeva, nel caso fosse necessario effettuare una ricerca su tutta una lista/raccolta documenti esplorando anche le sottocartelle, a creare delle viste personalizzate che esponessero tutto il contenuto senza tener conto delle cartelle.
Con la versione 3.0 questi limiti non sono stati superati ma è stata introdotta la classe SPSiteDataQuery, che offre la possibilità di effettuare delle query su più liste/raccolte documenti che si possono trovare anche su diversi WebSite a condizione che si trovino tutti nella stessa SiteCollection.
Ho provato ad utilizzarla e debbo dire che è molto utile, ci sono però alcune controindicazioni:
- Tutta la sintassi per configurare la classe è basata su stringhe XML e, specialmente all'inizio, non è semplicissimo venirne a capo (anche perché gli esempi non sono molti).
- I nomi dei campi debbono essere indicati correttamente e debbono essere presenti in tutte le liste interessate (oppure opportunamente marcati come Nullable); se si sbaglia qualcosa, non abbiamo indicazioni, l'unico effetto è quello che la DataTable restituita è priva di righe (stesso comportamento di una query che non da risultati), cosa questa che può far perdere veramente molto tempo prima di venirne a capo.
Technorati Tags:
SharePoint