2010-07-12 5 views
0

Je dois sélectionner une valeur unique dans une liste SharePoint en fonction d'une valeur de champ. Le type du champ est LinkFieldValue. Comment dois-je écrire la requête CAML?Comment puis-je écrire un SPQuery pour filtrer des éléments basés sur un LinkFieldValue?

Lorsque je sélectionne les éléments avec une requête vide, tous les éléments de la liste sont reçus comme prévu.

Lorsque j'ajoute des contraintes à la requête, elle renvoie un résultat vide. J'ai essayé la construction de la requête comme suit:

string.Format("<Where><Eq><FieldRef Name=\"PollInstancePoll\" /><Value " 
+"Type=\"Text\">{0}</Value></Eq></Where>", 
new LinkFieldValue { NavigateUrl = "/az/Lists/Polls/DispForm.aspx?ID=1", 
Text = "example poll" }); 

qui se traduit dans le texte de la requête suivante:

<Where><Eq><FieldRef Name="PollInstancePoll" /> 
<Value Type="Text"><a href="/az/Lists/Polls/DispForm.aspx?ID=1">example poll</a></Value> 
</Eq></Where> 

Répondre

1

J'ai résolu mon problème avec la requête suivante:

new SPQuery 
{ 
    Query = 
     CAML.Where(
      CAML.And(
       CAML.Contains(
        CAML.FieldRef("PollInstancePoll"), 
        CAML.Value(pollPath)), 
       CAML.Contains(
        CAML.FieldRef("PollInstancePage"), 
        CAML.Value(pagePath)))) 
}; 

Essentiellement, je Je vérifie seulement la partie URL du champ Lien, et fournissons la valeur pour la comparaison comme Type="Text". Il est important de garder à l'esprit que SharePoint stocke les valeurs dans la base de données toujours en tant qu'URL relative au serveur.

+0

+1 Pour me présenter à CAML.NET –

Questions connexes