Lists.asmx, GetListItems en mappen

Ik deed wat onderzoek voor iemand vandaag rond de list.asmx webservice geleverd als onderdeel van SharePoint 2010 (en eerder).  Ze kon krijgen de lijstitems op de root-map (met inbegrip van de namen van de submappen), maar kon niet items in submappen.  Ik deed wat rondkijken op de internets en het is een verrassend gemeenschappelijke vraag.  Nog, Ik kon niet krijgen een goed antwoord op de eenvoudige vraag, "als ik weet dat de map, Hoe krijg ik de items in de map?”  Om eerlijk te zijn, Ik heb niet proberen zo hard aangezien ik figuur dit één uit op mijn eigen voor een tijdje wilde Glimlach.

Dit instellen, Ik heb een site met de naam "Bloggen scenario's" en een aangepaste lijst genaamd "Aangepaste lijst met Sub Folders".  Ik vervolgens mappen met deze naam gemaakt:

  • Jaar 2005
  • Jaar 2006
  • Jaar 2007

Ik een paar items toegevoegd aan de map "Year 2006".  Dit is wat het als kijkt:

image

Mijn vriend is niet C# code te schrijven maar eerder met behulp van Java, dus de SOAP-envelop wat ze echt nodig was.  Om dat te krijgen, Ik schreef een beetje van jQuery en vervolgens fiddler gebruikt om de werkelijke HTTP gesprek.

Hier is het relevante jQuery (Ik heb de code gekopieerd naar beneden hieronder als u wilt kopiëren en plakken):

image

Zij eerste sleutel is om zowel een <queryOptions> en <QueryOptions> knooppunt.  De tweede sleutel is dat de <Map> knooppunt is een URL waarnaar de client toegang heeft.

Kunnen er andere manieren om dit te krijgen, maar dit werkte goed voor mij toen met behulp van jQuery.

Hier is de SOAP-envelop voor de bovenstaande:

<soapenv:Envelop xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Lichaam>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Aangepaste lijst met submappen</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef naam =' titel’ />
          <FieldRef naam ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Map>
http://demoserver1/bloggen Scenario's / lijsten/aangepaste lijst met Sub mappen/jaar 2006</Map>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Lichaam>
</soapenv:Envelop>

Een heleboel voorbeelden en discussie rond dit leidde me om te geloven dat alles wat ik nodig was <QueryOptions> en geef een mapnaam.  Voor mij, Ik nodig beide wikkel het binnen <queryOptions> zo goed als een volledig gekwalificeerde URL opgeven voor de <Map> knooppunt.

Hier is de setup jQuery AJAX:

$(document).klaar(functie() {
       var soapEnv =
           "<soapenv:Envelop xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Lichaam> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Aangepaste lijst met submappen</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef naam =' titel’ /> \
                              <FieldRef naam ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Map>http://demoserver1/Blogging Scenario's / lijsten/aangepaste lijst met Sub mappen/jaar 2006</Map> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Lichaam> \
           </soapenv:Envelop>";

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

6 gedachten over "Lists.asmx, GetListItems en mappen

  1. Daniel

    Hallo

    I 'm trying to de documenten onder een specifieke map met behulp van een EPD weergeven 2010 DataSource GetListItems

    Zodra ik met mijn webservice verbinden en geef de guid voor de documentbibliotheek
    Ik kan de QueryOptions wijzigen en voer het volgende stuk van CAML
    Compliance TrainingCompanyX.

    Alleen dit heeft geen resultaten opgeleverd – verwijderen van de parameter QueryOptions geeft alle documenten in de documentbibliotheek wortel….

    Ben ik kijken naar enkele soort passeren parameter bekijken en opnemen van de guid van de weergave.

    Antwoord
    1. Paul Galvin Bericht auteur

      Dit is een zeer oude post/commentaar zo droevig voor nooit beantwoorden. Ik neem aan dat u lange sindsdien bedacht hoe verder te gaan.

      Antwoord
  2. Bob Bolton

    OK, het lijkt erop dat het ontdaan uit het XML-bestand… Vervang gewoon de hekjes hieronder met dubbele punthaken.

    #queryOptions #
    #QueryOptions #
    #ViewAttributes toepassingsgebied = 'RecursiveAll' / #
    #/QueryOptions #
    #/queryOptions #

    Antwoord
  3. Doug

    Thanks a bunch voor dit bericht, Paul. Ik heb geprobeerd om te consumeren GetListItems via ColdFusion cfhttp, en kon niet krijgen de envelop juiste. Uiteindelijk kwam in dit bericht, en uw voorbeeld werkte perfect. Nogmaals bedankt.

    Antwoord
  4. Doug

    BTW – u verrichten weet van een resource die alle goede zeep enveloppen lijsten? De GetList Items gepubliceerd op microsoft.com niet overeenkomt met u hier bent…

    Antwoord

Verlaat een antwoord te Bob Bolton annuleer antwoord

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *