Lists.asmx, GetListItems and Folders

Am făcut unele de cercetare pentru cineva astăzi în jurul web list.asmx serviciului furnizat ca parte din SharePoint 2010 (şi mai devreme).  Ea a fost în măsură pentru a obţine elementele de listă la folderul rădăcină (inclusiv numele subfolderelor), dar nu a putut obţine elemente în sub-pliant.  Am făcut unele privire around pe Internet şi este o chestiune de surprinzător de comune.  Încă, Nu am putut ajunge un răspuns bun la întrebarea simplă, "dacă ştiu folderul, cum a face I a lua elementele în folderul?”  Pentru a fi sincer, Nu încerc toate că greu deoarece mi-am dorit pentru a figura acest una pe propria mea pentru un timp Zâmbet.

Pentru a parametriza acest lucru, Am creat un site numit "Blogging-ul scenarii" şi o listă particularizată numit "Lista cu Sub foldere personalizate".  Apoi am creat foldere numit:

  • An 2005
  • An 2006
  • An 2007

Am adăugat câteva elemente în folderul "Anul 2006".  Aceasta este ceea ce pare ca:

image

Prietenul meu nu este scris în C# cod, dar mai degrabă folosire Java, Deci plicul SĂPUN a fost ceea ce ea într-adevăr nevoie.  Pentru a obţine că, Am scris un pic jQuery şi apoi folosite Scripcarul pentru a obţine conversaţie reale HTTP.

Aici este jQuery relevante (Am copiat codul în jos mai jos dacă doriţi să copiaţi/lipiţi):

image

Au prima cheie este de a include atât un <queryOptions> şi <QueryOptions> nod.  A doua cheie este că <Folder> nodul este un URL la care clientul are acces.

Pot exista alte modalităţi de a obţine acest lucru, dar aceasta a lucrat bine pentru mine când folosind jQuery.

Aici este plicul SĂPUN pentru cele de mai sus:

<soapenv:Plic xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/envelope/’>                
  <soapenv:Organism>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Lista particularizată cu subdosarele</listName>
      <viewFields>  
        <ViewFields>
          <Numele FieldRef =' titlu’ />
          <Numele FieldRef ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Folder>
http://demoserver1/blogging-ul Scenarii/liste/particularizat lista cu Sub foldere/anul 2006</Folder>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Organism>
</soapenv:Plic>

O mulţime de exemple şi discuţii în jurul acest lucru a condus-mi să cred că tot ce am nevoie a fost <QueryOptions> şi specificaţi un nume de folder.  Pentru mine, I nevoie atât wrap-o în interiorul <queryOptions> precum şi specificaţi un URL-ul complet pentru <Folder> nod.

Iată de configurare de AJAX jQuery:

$(document).gata(funcţia() {
       var soapEnv =
           "<soapenv:Plic xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/envelope/’> \
               <soapenv:Organism> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Lista particularizată cu subdosarele</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <Numele FieldRef =' titlu’ /> \
                              <Numele FieldRef ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Folder>http://demoserver1/Blogging Scenarii/liste/particularizat lista cu Sub foldere/anul 2006</Folder> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Organism> \
           </soapenv:Plic>";

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

6 gânduri pe "Lists.asmx, GetListItems and Folders

  1. Doina

    salut

    Am încercat pentru a afişa documente sub un anumit folder utilizând SPD 2010 Sursa de date GetListItems

    După ce am conecta la serviciul meu de web şi introduceţi GUID-ul pentru biblioteca de documente
    Pot modifica QueryOptions şi introduceţi următoarea bucată de florin
    Respectarea TrainingCompanyX.

    Numai acest lucru nu a returnat niciun rezultat – eliminarea parametrul QueryOptions returnează toate documentele din biblioteca de documente rădăcină….

    Sunt eu uita la unele trece un fel de Vezi parametrul şi includ GUID-ul Vezi.

    Răspuns
    1. Paul Galvin Mesaj autor

      Acesta este un foarte vechi post/comentariu atât de rău pentru a nu răspunde. Presupun că lung deoarece dat seama cum să procedaţi.

      Răspuns
  2. Bob Bolton

    ok, se pare ca a deposedat afară xml… doar înlocuiţi Liră semnele de mai jos cu ghilimele unghiulare.

    #queryOptions #
    #QueryOptions #
    #ViewAttributes de aplicare = "RecursiveAll" / #
    #/QueryOptions #
    #/queryOptions #

    Răspuns
  3. Doug

    Mulţumiri un buchet pentru acest post, Paul. Am fost încercarea de a consuma GetListItems prin intermediul ColdFusion cfhttp, şi nu ar putea obţine dreptul de plic. În cele din urmă a venit peste acest post, şi dumneavoastră exemplu lucrat impecabil. Multumesc din nou.

    Răspuns
  4. Doug

    BTW – stii de o resursă care listează toate plicurile buna săpun? Unul pentru GetList articole publicate pe microsoft.com nu meci tu esti aici…

    Răspuns

lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate *