Lists.asmx, GetListItems и директориуми

Правев некои истражувања за некој денес целиот веб list.asmx услуги обезбедени како дел од SharePoint 2010 (и порано).  Таа беше во можност да се добие листа предмети на папка (вклучувајќи ги имињата на под-папки), но не можеше да се добие ставки во под-папки.  Јас не некои бараат околу за на Internets и тоа е изненадувачки заеднички прашање.  Сепак,, Не можев да се добие добар одговор на едноставно прашање, "Ако знам дека папката, Како можам да добијам на ставки во папка?"  Да бидам искрен, Не се обидов сето тоа тешко, бидејќи јас сум сакал да дознаам ова на моето за некое време Насмевка.

Да го поставите на овој, Јас создаде сајт наречен "Блогирање сценарија" и обичај листа наречена "Сопствен Листа со под директориуми".  Јас тогаш создаде директориуми именувани:

  • Година 2005
  • Година 2006
  • Година 2007

Јас додадов неколку предмети во папката "Година 2006".  Ова е она што изгледа како:

image

Мојот пријател не е пишување C # кодот туку со употреба на Java, па SOAP пликото беше она што таа навистина потребно.  Да се ​​добие дека, Напишав малку на jQuery и потоа се користи свирач да го добиете вистинскиот за HTTP разговор.

Тука е релевантен jQuery (Јас копирани го кодот долу, ако сакате да направите копирај / вметни):

image

Тие прво Клучот е да го вклучите двете <queryOptions> и <QueryOptions> јазол.  Вториот клучен е дека <Папка> јазол е URL-то на кој клиентот има пристап.

Може да има други начини да се добие оваа, но тоа добро работеа за мене, кога со користење на веб.

Тука е SOAP плико за горенаведените:

<soapenv:Плик xmlns:soapenv =’HTTP://schemas.xmlsoap.org / сапун / плик /’>                
  <soapenv:Тело>
    <GetListItems xmlns =’
HTTP://schemas.microsoft.com / SharePoint / сапун /’>
      <listName>Прилагодено Листа со под директориуми</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef Име = "Наслов’ />
          <FieldRef Име = "EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Папка>
HTTP://demoserver1/Blogging Сценарија / листите / прилагодување по желба Листа со под директориуми / 2006 година</Папка>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Тело>
</soapenv:Плик>

А многу примери и дискусија околу ова ме натера да верувам дека сè што ми треба е <QueryOptions> и наведете име за папката.  За мене, Ми треба да и ставете го во <queryOptions> како и да определи целосно квалификувани URL за <Папка> јазол.

Тука е jQuery AJAX подесување:

$(документ).подготвени(функција() {
       var soapEnv =
           "<soapenv:Плик xmlns:soapenv =’HTTP://schemas.xmlsoap.org / сапун / плик /’> \
               <soapenv:Тело> \
                    <GetListItems xmlns =’HTTP://schemas.microsoft.com / SharePoint / сапун /’> \
                       <listName>Прилагодено Листа со под директориуми</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef Име = "Наслов’ /> \
                              <FieldRef Име = "EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Папка>http://demoserver1/Blogging Сценарија / листите / прилагодување по желба Листа со под директориуми / 2006 година</Папка> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Тело> \
           </soapenv:Плик>";

</крајот>

Да се ​​претплатите на мојот блог.

Следете ме на Twitter во http://www.twitter.com/pagalvin

6 размислувања за "Lists.asmx, GetListItems и директориуми

  1. Daniel

    Hi

    I am trying to display the documents under a specific folder using a SPD 2010 DataSource GetListItems

    Once I connect to to my web service and enter the guid for the document library
    I can modify the QueryOptions and enter the following piece of CAML
    Compliance Training\CompanyX.

    Only this does not return any results – removing the QueryOptions parameter returns all the documents in the root document library….

    Am I looking at passing some sort of view parameter and include the view guid.

  2. Даг

    Благодарение на еден куп за овој пост, Paul. Сум се обидува да се консумираат GetListItems преку ColdFusion cfhttp, и не би можеле да добијат на ковертот право. На крајот наидов на овој пост, и вашиот пример работеше беспрекорно. Ви благодариме повторно.

  3. Даг

    BTW – знаеш на извор кој ги набројува сите соодветни сапун коверти? Оној за GetList Теми објавени на microsoft.com не одговара на Вашата овде…

Остави Одговори

Вашата е-маил адреса нема да бидат објавени. Задолжителни полиња се означени *