2012-10-02 1 views
5

J'ai une liste où je stocke les URL de l'image et j'essaie de lire la liste des éléments et d'afficher les images sur la page. Pour que j'ai écrit le script quelque chose comme ci-dessous ....Lire les éléments de la liste Modèle d'objet client Sharepoint 2010

<script type="text/javascript"> 
    function ViewItem() 
    { 
     var myQueryString = '<Query><Where><Eq><FieldRef Name="Anchor" /><Value 

Type="Boolean">1</Value></Eq></Where></Query>'; 

     var context = new SP.ClientContext.get_current(); 
     var web = context.get_web(); 
     var list = web.get_lists().getByTitle('AnchorImageList'); 
     var myquery = new SP.CamlQuery(); 

     myquery.set_viewXml(myQueryString); 

     myItems = list.getItems(myquery); 


     context.load(myItems, 'Include(Title,ImageURL)'); 
     context.executeQueryAsync(Function.createDelegate(this, this.success), 

Function.createDelegate(this, this.failed)); 
    } 
    function success() 
    { 

     var LinkURL= ""; 
     var ImageURL=""; 
     var ListEnumerator = this.myItems.getEnumerator(); 
     while(ListEnumerator.moveNext()) 
     { 
      var currentItem = ListEnumerator.get_current(); 
      LinkURL = currentItem.get_item('Title') ; 
      ImageURL= currentItem.get_item('ImageURL'); 
      document.write('<img src="' + ImageURL+ '"+>'); 
      alert(LinkURL); 

     } 

    } 
    function failed(sender, args) 
    { 
     alert("failed. Message:" + args.get_message()); 
    } 
</script> 
<a href="#" onclick="Javascript:ViewItem();">View Items</a> 

Dans ma requête CAML Je suis en train de filtrer les éléments qui sont étiquetés oui pour « Anchor? » (Oui/non colonne).

Mais je vois tous les résultats même si j'ai marqué quelques éléments à ne pas afficher. Ce que je fais mal ici. S'il vous plaît, quelqu'un m'aide. En outre, une fois les images chargées sur la page, la page montre toujours la roue comme si elle traitait quelque chose. Ai-je besoin de faire quelque chose pour ça?

+1

+1 bonne question/échantillon raisonnable. Note marginale sur la qualité des questions: il n'est pas nécessaire d'ajouter des notes de remerciement (upvote/accept/comment) et une signature car elle ajoute rarement de la valeur à la publication. –

+1

vérifier votre requête caml en utilisant U2U Caml Builder –

+1

J'ai écrit la requête en utilisant le constructeur u2u seulement et la requête renvoie des résultats corrects quand je l'exécute là. Je ne suis pas sûr pourquoi la même requête ne fonctionne pas à partir du modèle d'objet client. – user346514

Répondre

1

Supprime les balises Query de la requête CAML stockée dans myQueryString. Les balises sont ajoutées implicitement lorsque la requête est exécutée.

Il m'a déjà fait trébucher. La chose insidieuse à ce sujet est que la requête n'échouera jamais purement et simplement; parfois ça marche, parfois ça ne marche pas, ce qui fait mal à déboguer.

+0

Merci CBono. J'ai essayé différentes façons et ça n'a pas vraiment marché. J'utilise Dataview webpart maintenant. Jusqu'à présent, il m'a donné la sortie que je voulais. Je vais l'élargir pour obtenir plus de résultats souhaités. – user346514

3

essayer celui-ci:

<View> 
    <Query> 
    <Where> 
     <Eq> 
     <FieldRef Name="Anchor" /> 
     <Value Type="Boolean">1</Value> 
     </Eq> 
    </Where> 
    </Query> 
</View> 

en cas si elle ne fonctionne pas pour vous, suivez les étapes suivantes:

  1. Créer une vue de la liste en utilisant les fonctionnalités standard.
  2. Ouvrez-le dans SharePoint Designier et copiez simplement la requête CAML à partir du code.

Espérons que cela aidera.

0

J'ai trouvé que si vous utilisez juste des guillemets simples dans votre requête CAML cela fonctionnera. Le mélange de guillemets doubles et simples jacks la requête pour une raison quelconque. J'espère que cela pourra aider.

Questions connexes