FAQ SharepointConsultez toutes les FAQ

Nombre d'auteurs : 2, nombre de questions : 46, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireOutils et développementRequêtes CAML

Vous pouvez utiliser la classe SPQuery. Voici, un exemple.

 
Sélectionnez

try
{
  SPSite site = new SPSite("serveur_url");
  SPWeb web = new site.OpenWeb();
  SPList list = web.Lists["votre_liste"];
  SPQuery query = new SPQuery(list.DefaultView);
  query.Query = "<Where><Eq><FieldRef Name='VotreChamp'/><Value Type='Text'>Une Valeur</Value></Eq></Where>"; 
  SPListItemCollection items = list.GetItems(query);

  foreach (SPListItem item in items)
  {
    Console.WriteLine(item["Title"]));
  }
}
catch(SPException SpEx) 
{
 //Traitement d'erreur
}

Ici, nous utilisons l'opérateur "<Eq>, nous pourrions par exemple utiliser <Contains pour une recherche correspondant à un LIKE SQL.
Vous devez bien spécifier le nom interne du champ de liste et non son titre "Title".


Il existe également des outils graphiques permettant de générer des requêtes CAML. Une petite recherche sur CAML Query Builder sur google
vous guidera vers ce type d'outil.

Créé le 8 mai 2007  par Stephane Eyskens
 
Sélectionnez

try
{
  SPSite site = new SPSite("serveur_url");
  SPWeb web = new site.OpenWeb();
  SPList list = web.Lists["votre_liste"];
  SPQuery query = new SPQuery(list.DefaultView);
  query.Query = "<Where><Eq><FieldRef Name='VotreChamp'/><Value Type='Text'>Une Valeur</Value></Eq></Where>"; 
  SPListItemCollection items = list.GetItems(query);

  foreach (SPListItem item in items)
  {
    Console.WriteLine(item["Title"]));
  }
}
catch(SPException SpEx) 
{
 //Traitement d'erreur
}

Dans l'exemple précédent, nous spécifions la vue "DefaultView". Nous aurions pu utiliser une vue définie au niveau de la liste. Il est aussi possible de spécifier
les champs à inclure comme ceci:

 
Sélectionnez

query.ViewFields = "<FieldRef Name='Champ1'/><FieldRef Name='Champ2'/>....";
Créé le 8 mai 2007  par Stephane Eyskens

Lorsque vous effectuez une requête CAML sur une liste Sharepoint via SPQuery, il faut veiller à bien spécifier le nom interne des colonnes dans la clause
Where.

La propriété InternalName de la classe SPField vous renseignera.

 
Sélectionnez

try
{
  SPSite site = new SPSite("url du serveur");
  SPWeb web = site.OpenWeb();
  SPList list = web.Lists["votre liste"];
  foreach(SPField field in list.Fields)
  {
    Console.WriteLine("Nom usuel : {0} Nom Interne: {1}",field.Title,field.InternalName); 
  }
}
catch(SPException SpEx){//traitement}
Créé le 8 mai 2007  par Stephane Eyskens
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.