Si basa su una definizione XML che ci permette di manipolare gli oggetti di SharePoint.
Di seguito una semplice query nella quale, definiamo un filtro che controlla se il valore della colonna specificata sia uguale al valore inserito e i risultati ottenuti verranno ordinati secondo le colonne elencate:
insertValueHere
Ecco la tabella con gli operatori di confronto:
Chiave | Tipo controllo |
Contains | Contiene il testo inserito |
Eq | Uguale a |
Geq | Più grande o uguale a |
Gt | Più grande di |
Leq | Più piccolo o uguale a |
Lt | Più piccolo di |
Neq | Non uguale a |
DateRangesOverlap | Confronto fra date in eventi ricorrenti per controllare se si sovrappongono |
IsNotNull | Non è null |
IsNull | E’ null |
Sfortunatamente SharePoint a volte traduce, il nome delle colonne create, in una qualche maniera non intuitiva; e sono i nomi che dobbiamo inserire nei FieldRefs delle nostre query CAML;
ad esempio la colonna “Start Date” diventerà “Start_x0020_Date”.
Di seguito una semplice console application con la quale possiamo ottenere i nomi delle nostre colonne:
namespace SharePointTools { using System; using System.Collections.Generic; using System.Text; using Microsoft.SharePoint; class Program { static void Main(string[] args) { string siteUrl = args[0]; string listName = args[1]; string viewName = args[2]; SPSite site = new SPSite(siteUrl); SPWeb web = site.OpenWeb(); SPList employeesList = web.Lists[listName]; SPQuery query = new SPQuery(employeesList.Views[viewName]); System.Diagnostics.Debug.WriteLine(query.ViewXml); Console.WriteLine(query.ViewXml); Console.ReadLine(); } } }
Lavorando su SharePoint vi sarà utile creare una serie di tool che vi torneranno utili durante lo sviluppo della vostra applicazione; tool come quello di sopra. |
L’oggetto SPQuery è usato per ottenere il FieldRefs dalla view.
La seguente query ordina i dati ottenuti per la colonna Title e filtra i dati per la colonna “Start Date” dove il valore è più piccolo della data inserita:
2003-01-01T00:00:00Z
Di seguito una console application che esegue la query di cui sopra:
namespace SharePointTools { using System; using System.Collections.Generic; using System.Text; using Microsoft.SharePoint; class SPCAMLQuery { static void Main(string[] args) { string siteName = args[0]; string listName = args[1]; string viewName = args[1]; SPSite site = new SPSite(siteName); SPWeb web = site.OpenWeb(); SPList employeesList = web.Lists[listName]; SPQuery query = new SPQuery(employeesList.Views[viewName]); query.Query = ""; SPListItemCollection filteredEmployees = employeesList.GetItems(query); foreach (SPListItem i in filteredEmployees) System.Diagnostics.Debug.WriteLine(i["Title"].ToString() + " " + i["Salary"].ToString() + " " + i["Start_x0020_Date"].ToString()); Console.ReadLine(); } } } 2008-01-01T00:00:00Z
Sempre tramite CAML abbiamo anche a disposizione gli operatori logici AND e OR, eccone un esempio:
2008-01-01T00:00:00Z 80000
Creare le query CAML a manina non è certo uno dei compiti più semplici.
Sicurametne vi tornerà utile il tool U2U CAML Query Builder
enjoy
No comments:
Post a Comment