Tag Archives: lists.asmx

Lists.asmx, GetListItems ja kaustad

Ma tegin mõned uuringud keegi täna ümber osa SharePointi list.asmx veebiteenus 2010 (ja varem).  Ta suutis saada loendiüksuste root kausta (sealhulgas alamkatalooge nimed), aga ei suutnud saada punkte linnas alamkatalooge.  Ma tegin mõned vaadates selle internets ja on üllatavalt üldine küsimus.  Veel, Ma ei saanud hea vastata lihtsale küsimusele, "kui ma tean kaust, Kuidas saada üksused kausta?”  Kui aus olla, Ma ei proovi nii kõvasti, sest mõnda aega olen tahtnud näitaja see üks läbi minu oma naeratus.

Selle seadistama, Olen loonud saidi nimega "Blogging stsenaariumid" ja kohandatud loend nimega "Kohandatud loend koos Sub kaustad".  Siis ma loonud kausta nimega:

  • Aasta 2005
  • Aasta 2006
  • Aasta 2007

Lisasin mõned üksused kausta "aastal 2006".  See on, kuidas see välja näeb:

image

Mu sõber ei ole C# koodi aga pigem kasutades Java, nii oli SEEP ümbrik, mida ta tegelikult vaja.  Saada, et, Kirjutasin natuke jQuery ja saada tegelik HTTP vestlus viiuldaja harjunud.

Siin on asjakohane jQuery (I kopeeritud kood ette allpool kui soovite kopeeri/kleebi):

image

Nad esimene võti on nii a <queryOptions> ja <QueryOptions> sõlme.  Teine võti on see, et selle <Kausta> sõlm on URL, millele kliendil on juurdepääs.

Võib esineda muid võimalusi saada see, Aga see töötas hästi minu jaoks, kasutades jQuery.

Siin on SEEP eraldati eespool:

<soapenv:Ümbrik xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Keha>
    <GetListItemid oleksid xmlns =’
http://schemas.microsoft.com/SharePoint/SOAP/’>
      <listName>Kohandatud loendi alamkaustadena</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef nimi = "pealkiri’ />
          <FieldRef nimi ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Kausta>
http://demoserver1/Blogging Stsenaariume/loendid/kohandatud loendi Sub kaustad/aasta 2006</Kausta>
        </QueryOptions>
      </queryOptions>
   
</GetListItemid oleksid>
  </soapenv:Keha>
</soapenv:Ümbrik>

Palju näiteid ja arutelu selle ümber viinud mind uskuma, et kõik, mida mul vaja oli <QueryOptions> ja määrake kausta nimi.  Minu jaoks, Mul on vaja nii murrab ta sees <queryOptions> Samuti saate määrata täielik URL on <Kausta> sõlm.

Siin on jQuery AJAX seadistamine:

$(dokumendi).valmis(funktsioon() {
       var soapEnv =
           "<soapenv:Ümbrik xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Keha> \
                    <GetListItemid oleksid xmlns =’http://schemas.microsoft.com/SharePoint/SOAP/’> \
                       <listName>Kohandatud loendi alamkaustadena</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nimi = "pealkiri’ /> \
                              <FieldRef nimi ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Kausta>http://demoserver1/Blogging Stsenaariume/loendid/kohandatud loendi Sub kaustad/aasta 2006</Kausta> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItemid oleksid> \
               </soapenv:Keha> \
           </soapenv:Ümbrik>";

</lõpp>

Telli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

Lists.asmx, GetList ja "väärtus ei saa olla null”

Ma avastasin eile et kui GetList() meetod lists.asmx veebiteenus on väga hoolikalt nimetati või on kalduvus visata salapärane "Väärtus ei tohi olla tühi" erand (ja mis eeldab saad mööda veel hullem üldise tõrketeate, "Erandi tüüp ' Microsoft.SharePoint.SoapServer.SoapServerException’ oli visatud.")  Konkreetselt, Ma leidsin, et ei anna mingeid eesliide GetList meetodil.  JQuery koodijupi illustreerib punkt:

image

Kui sa seda, veebiteenus vastab "Väärtus ei tohi olla tühi" nagu see viiuldaja-esitatud HTTP transcript:

<?XML-i versioon = "1.0" kodeering = "utf-8"?>
  <seep:Ümbrik
     xmlns:seebi ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:Xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/ 2001/Xmlskeemi">

  <seep:Keha>
    <seep:Süü>
      <faultcode>seep:Server</faultcode>
      <faultstring>
        Erandi tüüp ' Microsoft.SharePoint.SoapServer.SoapServerException’ visati.
      </faultstring>
      <detail>
        <errorstring xmlns ="
http://schemas.microsoft.com/SharePoint/SOAP/">
Väärtus ei tohi olla nullväärtusega.
        </errorstring>
      </detail>
    </seep:Süü>
  </seep:Keha>
</seep:Ümbrik>

Muidugi, sa ilmselt ei lisa see "s0" eesliide oma, kuid mõned tööriistad on kalduvus teha (näiteks Eclipse).

See on veelgi segadust / masendav, sest muid meetodeid talu eesliited.  Näiteks, selle GetListCollection meetod ei ole meeles, kui see on olnud eesliide, isegi koos jama prefikseid nagu "xyzzy":

image

See "väärtus ei tohi olla tühi" tundub üsna levinud lists.asmx, nii et loodetavasti see aitab keegi välja tulevikus.

</lõpp>

Telli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin