Tag Archives: SharePoint Web Services

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