marcatori archivi: SharePoint Web Services

Lists.asmx, GetListItems e le cartelle

Stavo facendo qualche ricerca per qualcuno oggi intorno al servizio di web list.asmx fornito come parte di SharePoint 2010 (e precedenti).  Lei era in grado di ottenere gli elementi dell'elenco alla cartella principale (anche i nomi delle sotto-cartelle), ma non poteva ottenere elementi in sotto-cartelle.  Ho fatto alcuni guardando in giro su internets ed è una domanda sorprendentemente comune.  Ancora, Non ho potuto ottenere una buona risposta alla domanda semplice, "se conosco la cartella, come ottenere gli elementi nella cartella?”  Ad essere onesti, Non provato duramente tutto ciò che dal momento che ho voluto capire questo una fuori il mio per un po ' sorriso, sorridere.

Per configurare questo, Ho creato un sito denominato "Blogging scenari" e un elenco personalizzato denominato "Elenco personalizzato con Sub cartelle".  Ho poi creato cartelle denominate:

  • Anno 2005
  • Anno 2006
  • Anno 2007

Ho aggiunto alcuni articoli nella cartella "Anno 2006".  Questo è quello che sembra:

image

Il mio amico non è scrittura di codice c#, ma piuttosto utilizzando Java, così la SOAP envelope era cosa aveva bisogno.  Per ottenere che, Ho scritto un po ' di jQuery e quindi utilizzato violinista per ottenere la conversazione reale HTTP.

Ecco le pertinenti jQuery (Ho copiato il codice giù sotto se volete copiare/incollare):

image

Essi prima chiave consiste nell'includere sia un <queryOptions> e <QueryOptions> nodo.  La seconda chiave è che il <Cartella> il nodo è un URL a cui il cliente ha accesso.

Ci possono essere altri modi per arrivare a questo, ma questo ha funzionato bene per me quando si utilizza jQuery.

Ecco la SOAP envelope sopra:

<soapenv:Busta xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Corpo>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Elenco personalizzato con sottocartelle</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef Name =' titolo’ />
          <FieldRef Name ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Cartella>
http://demoserver1/Blogging Elenco di scenari/liste/Custom con Sub cartelle/anno 2006</Cartella>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corpo>
</soapenv:Busta>

Un sacco di esempi e la discussione intorno a questo mi ha portato a credere che tutto quello che serve è stato <QueryOptions> e specificare un nome di cartella.  Per me, Io ho bisogno di entrambi avvolgerla all'interno <queryOptions> così come specificare un URL completo per il <Cartella> nodo.

Qui è l'installazione di AJAX jQuery:

$(documento).pronto(funzione() {
       var soapEnv =
           "<soapenv:Busta xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Corpo> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Elenco personalizzato con sottocartelle</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef Name =' titolo’ /> \
                              <FieldRef Name ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Cartella>http://demoserver1/Blogging Elenco di scenari/liste/Custom con Sub cartelle/anno 2006</Cartella> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corpo> \
           </soapenv:Busta>";

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin