Lists.asmx, GetListItems und Ordner

Ich tat etwas Forschung für jemanden heute rund um den list.asmx-Web-Service im Rahmen des SharePoint 2010 (und früher).  Sie war in der Lage, die Listenelemente im Stammordner (die Namen der Unterordner), aber Elemente in Unterordner erhalten könnte.  Ich habe einige schauen herum auf dem Internets und es ist ein überraschend häufig gestellte Frage.  Noch, Ich könnte eine gute Antwort auf die einfache Frage nicht erhalten., "Wenn ich den Ordner weiß, Wie bekomme ich die Elemente in den Ordner?”  Um ehrlich zu sein, Ich versuchte nicht allzu hart, da ich zu Figur diesein raus auf eigene Faust für eine Weile wollte Lächeln.

Um dies einzurichten, Ich habe eine Site mit dem Namen "Blogging Scenarios" und eine benutzerdefinierte Liste mit dem Namen "Benutzerdefinierte Liste mit Sub-Ordner".  Ich habe dann Ordner mit dem Namen:

  • Jahr 2005
  • Jahr 2006
  • Jahr 2007

Ich hinzugefügt ein paar Elemente in den Ordner "Jahr 2006".  Dies ist, wie es aussieht:

image

Mein Freund ist nicht schreiben von C#-Code, sondern eher mit Hilfe von Java, So war der SOAP-Umschlag, was sie wirklich brauchte.  Zu erhalten, die, Ich schrieb ein wenig jQuery und Fiddler dann verwendet, um das tatsächliche HTTP-Gespräch zu erhalten.

Hier ist die relevante jQuery (Ich kopiert den Code unten unten wenn Sie kopieren möchten):

image

Sie erste Schlüssel ist, um sowohl eine <queryOptions> und <QueryOptions> Knoten.  Der zweite Schlüssel ist, dass die <Ordner> der Knoten ist ein URL, auf den der Client Zugriff hat.

Möglicherweise gibt es andere Möglichkeiten, um dies, aber dies funktioniert gut für mich, bei der Verwendung von jQuery.

Hier ist der SOAP-Umschlag für die oben:

<soapenv:Umschlag xmlns:Soapenv =’http://Schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Körper>
    <GetListItems Xmlns =’
http://Schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Benutzerdefinierte Liste mit Sub-Ordner</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef-Name =' Titel’ />
          <FieldRef-Name ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Ordner>
http://demoserver1-Blogging Szenarien/Listen/benutzerdefinierte Liste mit Sub-Ordner/Jahr 2006</Ordner>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Körper>
</soapenv:Umschlag>

Viele Beispiele und Diskussion um dies führte mich zu glauben, dass alles, was ich brauche <QueryOptions> und geben Sie einen Ordnernamen ein.  Für mich, Ich müssen sowohl in wrap <queryOptions> ebenso wie geben Sie eine vollqualifizierte URL für den <Ordner> Knoten.

Hier ist das jQuery-AJAX-setup:

$(Dokument).bereit(Funktion() {
       Var SoapEnv =
           "<soapenv:Umschlag xmlns:Soapenv =’http://Schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Körper> \
                    <GetListItems Xmlns =’http://Schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Benutzerdefinierte Liste mit Sub-Ordner</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef-Name =' Titel’ /> \
                              <FieldRef-Name ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Ordner>http://demoserver1/Blogging Szenarien/Listen/benutzerdefinierte Liste mit Sub-Ordner/Jahr 2006</Ordner> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Körper> \
           </soapenv:Umschlag>";

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

6 Gedanken zu „Lists.asmx, GetListItems und Ordner

  1. Danke.

    Hallo

    Ich versuche, die Dokumente unter einen bestimmten Ordner mithilfe einer SPD anzeigen 2010 DataSource GetListItems

    Sobald ich meine Web-Service zu verbinden, und geben Sie die Guid für die Dokumentbibliothek
    Ich kann die QueryOptions ändern und geben Sie das folgende Stück CAML
    Compliance TrainingCompanyX.

    Nur das zurück keine Ergebnisse – entfernen den QueryOptions-Parameter gibt alle Dokumente in der Stamm-Dokumentbibliothek….

    Bin ich Blick auf einige Art übergeben Parameter anzeigen und sind die Ansicht-guid.

    Antwort
    1. Paul Galvin Post Autor

      Dies ist ein sehr alter Beitrag/Kommentar so leid nie Antworten. Ich nehme an, Sie lange da herausgefunden, wie es weitergehen soll.

      Antwort
  2. Bob Bolton

    Okay, sieht aus wie es die XML-Daten entfernt… Ersetzen Sie einfach die Nummernzeichen unten mit Richtungspfeilen.

    #QueryOptions #
    #QueryOptions #
    #ViewAttributes Umfang = 'AlleRekursiv' / #
    #/QueryOptions #
    #/QueryOptions #

    Antwort
  3. Doug

    Vielen Dank für diesen Beitrag, Paul. Ich habe versucht über ColdFusion Cfhttp GetListItems verbrauchen, und konnte nicht den Umschlag rechts. Schließlich stieß auf diesen Beitrag, und Ihr Beispiel funktionierte einwandfrei. Nochmals vielen Dank.

    Antwort
  4. Doug

    BTW – kennen Sie eine Ressource, die die richtige Soap-Umschläge auflistet? Diejenige für GetList Elemente auf microsoft.com veröffentlicht passt du nicht hier bist…

    Antwort

Lassen Sie eine Antwort auf Bob Bolton Antwort verwerfen

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *