2012-10-02 24 views
5

Mam listę, w której przechowuję adresy URL obrazów i próbuję odczytać listę elementów i wyświetlić obrazy na stronie. W tym celu napisałem coś podobnego skryptu poniżej ....Odczytywanie pozycji listy Model obiektu klienta 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> 

W mojej kwerendy CAML Próbuję filtrować elementy, które są oznaczone Tak dla „Anchor?” (Tak/nie kolumna).

Ale widzę wszystkie wyniki, mimo że otagowałem kilka elementów, których nie można wyświetlić. Co robię źle tutaj. Proszę, pomóż mi. Ponadto po załadowaniu obrazów na stronę strona nadal pokazuje koło, jakby coś przetwarzało. Czy muszę coś dla tego zrobić?

+1

+1 dobre pytanie/uzasadniona próba. Notatka boczna dotycząca jakości pytań: nie ma potrzeby dodawania notatek z podziękowaniami (upvote/accept/comment) i podpisu, ponieważ rzadko dodają wartości do posta. –

+1

sprawdź zapytanie o caml używając U2U Caml Builder –

+1

Napisałem zapytanie używając tylko programu budującego u2u, a zapytanie zwraca poprawne wyniki, gdy go uruchomię. Nie jestem pewien, dlaczego to samo zapytanie nie działa z modelu obiektu klienta. – user346514

Odpowiedz

1

Wyjąć Query tagi z kwerendy Caml przechowywanych w myQueryString. Tagi są dodawane niejawnie po uruchomieniu zapytania.

To też mnie potknęło. Podstępne jest to, że zapytanie nigdy nie zawodzi; czasem działa, czasami nie, sprawiając, że debugowanie jest kłopotliwe.

+0

Dzięki CBono. Próbowałem na różne sposoby i tak naprawdę nie wyszło. Korzystam teraz z webviewu Dataview. Do tej pory dało mi to wynik, który chciałem. Będę go rozbudowywał, aby uzyskać bardziej pożądane rezultaty. – user346514

3

spróbować tego:

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

w przypadku, jeśli nie działa, wykonaj następujące czynności:

  1. Tworzenie widoku listy używając standardowej funkcjonalności.
  2. Otwórz na SharePoint Designier i po prostu skopiuj zapytanie CAML z kodu.

nadzieję, że pomoże.

0

Znalazłem, że jeśli użyjesz tylko pojedynczych cudzysłowów w twoim zapytaniu CAML, zadziała. Mieszanie podwójnych i pojedynczych cudzysłowów podnosi z jakiegoś powodu zapytanie. Nadzieja, która pomaga.