Tag Archives: Serveis de SharePoint de Web

Lists.asmx, GetListItems i carpetes

Jo estava fent una investigació per algú avui al voltant de la list.asmx web servei proporcionat com part del SharePoint 2010 (i anteriors).  Ella va ser capaç d'obtenir els elements de la llista a la carpeta d'arrel (incloent-hi els noms de sub-carpetes), però no podria aconseguir elements en subcarpetes.  Vaig fer algunes mirant al voltant de la internets i és una pregunta sorprenentment comú.  No obstant això, No podria aconseguir una bona resposta a la pregunta simple, "si jo sé la carpeta, com puc obtenir els elements a la carpeta?”  Per ser honest, No intento dur tot el que ja he volgut aquest un terme figura en el meu propi una estona somriure.

Per configurar-ho, He creat un lloc anomenat "Blogging escenaris" i una llista personalitzada anomenat "Costum llista amb subcarpetes".  Llavors vaig crear carpetes anomenades:

  • L'any 2005
  • L'any 2006
  • L'any 2007

He afegit uns elements a la carpeta de "Any 2006".  Això és el que sembla:

image

El meu amic no és l'escriptura de codi de c# però més aviat utilitzant Java, Així, els sobres de sabó, va ser el que realment necessitava.  Per aconseguir que, Vaig escriure una mica de jQuery i llavors utilitzava el violinista a la conversa d'HTTP present.

Heus aquí la jQuery rellevant (He copiat el codi avall per sota si vol copiar/enganxar):

image

És de primera clau per incloure a banda un <queryOptions> i <QueryOptions> node.  La segona clau és que el <Carpeta> node és un URL al qual el client té accés.

Pot haver-hi altres maneres d'aconseguir això, però això funcionava bé per a mi quan utilitzant jQuery.

Aquí hi ha les sobres de sabó per a l'anterior:

<soapenv:Sobres xmlns:soapenv =’http://Schemas.xmlsoap.org/SOAP/envelope/’>                
  <soapenv:Cos>
    <GetListItems xmlns =’
http://Schemas.Microsoft.com/SharePoint/SOAP/’>
      <NOMBRELISTA>Llista personalitzada amb subcarpetes</NOMBRELISTA>
      <viewFields>  
        <ViewFields>
          <FieldRef nom =' títol’ />
          <Nom de FieldRef ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Carpeta>
http://demoserver1/blocs Llista d'escenaris/llistes/personalitzada amb Sub les carpetes a l'any 2006</Carpeta>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Cos>
</soapenv:Sobres>

Un munt d'exemples i discussió al voltant d'això em va portar a crec que tot el que necessito és la <QueryOptions> i especifiqueu un nom de carpeta.  Per a mi, Jo necessitar als dos embolicar dins <queryOptions> així com d'especificar una URL plenament qualificat per a la <Carpeta> Node.

Aquesta és la configuració d'AJAX jQuery:

$(document).preparat(funció() {
       var soapEnv =
           "<soapenv:Sobres xmlns:soapenv =’http://Schemas.xmlsoap.org/SOAP/envelope/’> \
               <soapenv:Cos> \
                    <GetListItems xmlns =’http://Schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <NOMBRELISTA>Llista personalitzada amb subcarpetes</NOMBRELISTA> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nom =' títol’ /> \
                              <Nom de FieldRef ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Carpeta>http://demoserver1/Blogging Llista d'escenaris/llistes/personalitzada amb Sub les carpetes a l'any 2006</Carpeta> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Cos> \
           </soapenv:Sobres>";

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin