Maintenant que vous connaissez un peu le Collaboration Application Markup Language (CAML), nous pouvons exécuter notre première requête sur SharePoint. Nos requêtes vont s'attaquer à des "Listes".
Sur mon site Sharepoint, j'ai une liste de contacts, si je clique dessu, on voit ma liste de contacts :
Nous allons maintenant programmer une petite application console qui permet d'aller rechercher ces informations. Pour cela, nous avons besoin du nom des "colonnes" car sur cette image il ne s'agit que de "traduction". Nous allons avoir besoin de l'API Sharepoint pour aller rechercher les informations de cette liste.
Obtenir les informations d'une liste
Nous allons avoir besoin de deux classes se trouvant de le namespace "Microsoft.SharePoint" :
- SPSite : Cette classe représente une collection de site sur un serveur virtuel Sharepoint.
- SPWeb : Cette classe permet de représenter un seul site SharePoint.
Nous allons créer tout d'abord une instance de SPSite :
SPSite site = new SPSite(siteUrl);
"siteUrl" est en fait un paramètre qu'on passera à notre application console, il représente le site SharePoint que nous voulons attaquer. Nous allons maintenant créer notre SPWeb :
SPWeb web = site.OpenWeb();
En faite, la méthode "OpenWeb()" permet d'ouvrir le site passé comme paramètre au constructeur de notre SPSite. Maintenant que notre site Sharepoint est connu dans notre application, nous avons accès à ses propriétés.
Dans la suite logique, nous allons ouvrir la liste, qui elle aussi sera passée en argument à notre application :
SPList listContact = web.Lists[listName];
Une liste est donc une instance de SPListe. Pour effectuer une requête il nous faut :
- Un site (SPWeb)
- Une liste (SPList)
- Une vue
Pour créer notre requête, instance de SPQuery, nous avons besoin d'une vue (instance de SPView). Une vue dans SharePoint est symbolisée par un filtre en haut à droite de notre liste :
Le nom de notre vue est donc ici : "Tous les contacts". SPQuery à besoin comme paramètre du constructeur de la
vue dans laquelle va s'exécuter la requête :
SPQuery query = new SPQuery(listContact.Views[viewName]);
Ici, la méthode "Views" renvoit bien un objet SPView. La requête a maintenant bien toutes les informations sur l'objet qu'elle doit requêter. Pour visualiser ces informations, nous pouvons utiliser la propriété "ViewXml" de l'objet SPQuery. Voici donc notre premier petit programme terminé :
namespace SharePointList
{
class Program
{
static void Main(string[] args)
{
string siteUrl = args[0];
string listName = args[1];
string viewName = "Tous les contacts";
SPSite site = new SPSite(siteUrl);
SPWeb web = site.OpenWeb();
SPList listContact = web.Lists[listName];
SPQuery query = new SPQuery(listContact.Views[viewName]);
Console.WriteLine(query.ViewXml);
Console.ReadLine();
}
}
}
Si nous regardons l'exécution de cette application :
Nous avons enfin le "vrai" nom des colonnes. Nous pouvons maintenant utiliser CAML pour faire nos requêtes dessus.
Notre première requête CAML
Pour faire notre première requête CAML dans notre application, nous avons besoin de la même chose que dans l'application déjà créée ci-dessus :
- SPSite
- SPWeb
- SPList
- SPQuery
Donc nous pouvons reprendre tout le début du code en enlevant WriteLine et ReadLine. Nous devons maintenant définir la requête CAML :
<Where>
<Eq>
<FieldRef Name='LinkTitle'/>
<Value Type='Text'>Bar</Value>
</Eq>
</Where>
Normalement, il devra en ressortir un seul résultat vu que dans ma liste de contacts, je n'ai qu'une seule personne donc le "LinkTitle" est égal à "Bar".
Nous allons mettre cette requête dans une "string" c# et dire que la propriété "Query" de notre SPQuery est cette chaine :
string caml = "<Query><Where><Eq><FieldRef Name='LinkTitle'/><Value Type='Text'>Bar</Value>"
+ "</Eq></Where></Query>";
query.Query = caml;
Maintenant nous avons besoin d'un nouvel objet : SPListItemCollection pour obtenir l'ensemble des éléments de la liste :
SPListItemCollection listItemContact = listContact.GetItems(query);
Il ne nous reste plus qu'à parcourir l'ensemble des éléments de la liste. Voici notre programme final :
static void Main(string[] args)
{
string siteUrl = args[0];
string listName = args[1];
string viewName = "Tous les contacts";
SPSite site = new SPSite(siteUrl);
SPWeb web = site.OpenWeb();
SPList listContact = web.Lists[listName];
SPQuery query = new SPQuery(listContact.DefaultView);
string caml = "<Query><Where><Eq><FieldRef Name='LinkTitle'/><Value Type='Text'>Bar</Value>"
+ "</Eq></Where></Query>";
query.Query = caml;
SPListItemCollection listItemContact = listContact.GetItems(query);
foreach (SPListItem i in listItemContact)
{
Console.WriteLine(i["LinkTitle"].ToString() + " " + i["Company"].ToString());
}
}
Voilà, prochain article demain probablement :).
Lire la suite...
Tags:
caml,
sharepoint
Catégorie :
API SharePoint
Une question sur cet article? n'hésitez pas a me contacter par Live Messegner. Suis-je connecté? 
Actuellement noté 5.0 par 1 personne(s)
- Currently 5/5 Stars.
- 1
- 2
- 3
- 4
- 5
Permalink |
Commentaires (7) |
Post RSS |