Tag Archives: SharePoint-webtjenester

Lists.asmx, GetListItems og -mapper

Jeg gjorde noen undersøkelser for noen i dag rundt list.asmx-webtjeneste som en del av SharePoint 2010 (og tidligere).  Hun var i stand til å få listeelementene i rotmappen (deriblant med navn på undermapper), men kunne ikke få elementer i undermapper.  Jeg gjorde noen ser på internets, og det er en overraskende vanlige spørsmål.  Ennå, Jeg kunne ikke få en bra svar pσ enkelt spørsmål, "Hvis jeg vet mappen, Hvordan får jeg elementene i mappen?”  For å være ærlig, Jeg gjorde ikke prøve alle at hardt siden jeg har ønsket å figur dette en ut på min egen for en stund Smil.

Sette opp dette, Jeg laget et nettsted som heter "Blogging scenarier" og en egendefinert liste som heter "Egendefinert liste med Sub mapper".  Jeg deretter opprettet mapper med navnet:

  • År 2005
  • År 2006
  • År 2007

Jeg har lagt noen elementer til mappen "Year 2006".  Dette er hvordan det ser ut:

image

Min venn er ikke skrive C#-kode, men heller benytter Java, SOAP-konvolutten var så hva hun virkelig trengte.  Å få det, Jeg skrev en bit av jQuery og deretter brukt fiddler for å få faktiske HTTP samtale.

Her er den aktuelle jQuery (Jeg kopierte koden ned nedenfor hvis du vil kopiere/lime):

image

De første nøkkelen er å inkludere både en <queryOptions> og <QueryOptions> noden.  Den andre nøkkelen er at den <Mappen> noden er en URL-adresse som klienten har tilgang.

Det kan være andre måter å få dette, men dette jobbet godt for meg da ved hjelp jQuery.

Her er SOAP-konvolutten for det over:

<soapenv:Konvolutt xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Kroppen>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Egendefinert liste med Sub-mapper</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef navn =' tittel’ />
          <FieldRef navn ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Mappen>
http://demoserver1/Blogging Scenarier, lister, egendefinert liste med Sub-mapper/år 2006</Mappen>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Kroppen>
</soapenv:Konvolutt>

Mange eksempler og diskusjon rundt dette førte meg til å tro at alt jeg trenger var <QueryOptions> og angi et mappenavn.  For meg, Jeg trenger både brytes det i <queryOptions> i tillegg til å angi et fullstendig kvalifisert for den <Mappen> noden.

Her er oppsettet jQuery AJAX:

$(dokumentet).klar(funksjonen() {
       var soapEnv =
           "<soapenv:Konvolutt xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Kroppen> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Egendefinert liste med Sub-mapper</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef navn =' tittel’ /> \
                              <FieldRef navn ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Mappen>http://demoserver1/Blogging Scenarier, lister, egendefinert liste med Sub-mapper/år 2006</Mappen> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Kroppen> \
           </soapenv:Konvolutt>";

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin