Lists.ASMX, GetListItems dan folder

Aku sedang melakukan penelitian untuk seseorang hari ini sekitar list.asmx web layanan yang disediakan sebagai bagian dari SharePoint 2010 (dan sebelumnya).  Ia mampu untuk mendapatkan daftar item di folder akar (termasuk nama subfolder), tapi tidak bisa mendapatkan barang-barang dalam subfolder.  Aku melakukan beberapa memandang berkeliling di the internets dan pertanyaan yang mengejutkan umum.  Namun, Saya tidak bisa mendapatkan jawaban yang bagus untuk pertanyaan sederhana, "jika saya tahu folder, Bagaimana saya mendapatkan item di folder?”  Jujur, Aku tidak mencoba terlalu keras karena aku ingin angka satu ini keluar pada saya sendiri untuk sementara waktu Tersenyum.

Untuk mengatur hal ini, Saya membuat sebuah situs bernama "Blogging skenario" dan daftar kustom bernama "Daftar dengan Sub folder".  Saya kemudian membuat folder bernama:

  • Tahun 2005
  • Tahun 2006
  • Tahun 2007

Saya menambahkan beberapa item ke folder "Tahun 2006".  Ini adalah apa yang tampak seperti:

image

Teman saya tidak menulis C# kode tapi agak menggunakan Java, Jadi SOAP amplop adalah apa yang dia benar-benar diperlukan.  Untuk mendapatkan itu, Saya menulis sedikit jQuery dan kemudian digunakan fiddler untuk mendapatkan percakapan HTTP sebenarnya.

Berikut adalah relevan jQuery (Aku menyalin kode turun di bawah ini jika Anda ingin copy/paste):

image

Mereka kunci pertama adalah untuk memasukkan kedua <queryOptions> dan <QueryOptions> node.  Tombol kedua adalah bahwa <Folder> simpul adalah URL yang klien memiliki akses.

Mungkin ada cara lain untuk mendapatkan ini, Tapi ini bekerja dengan baik bagi saya ketika menggunakan jQuery.

Berikut adalah SOAP amplop untuk di atas:

<soapenv:Amplop xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Tubuh>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Daftar kustom dengan Sub folder</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef nama =' judul’ />
          <FieldRef nama ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Folder>
http://demoserver1/blog Skenario/daftar/Custom daftar dengan Sub folder/tahun 2006</Folder>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Tubuh>
</soapenv:Amplop>

Banyak contoh dan diskusi sekitar ini membawaku untuk percaya bahwa semua saya butuhkan adalah <QueryOptions> dan tentukan nama folder.  Bagi saya, Saya perlu untuk kedua bungkus dalam <queryOptions> serta menentukan URL yang memenuhi syarat untuk <Folder> node.

Here's the jQuery AJAX setup:

$(dokumen).siap(fungsi() {
       var soapEnv =
           "<soapenv:Amplop xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Tubuh> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Daftar kustom dengan Sub folder</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nama =' judul’ /> \
                              <FieldRef nama ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Folder>http://demoserver1/Blogging Skenario/daftar/Custom daftar dengan Sub folder/tahun 2006</Folder> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Tubuh> \
           </soapenv:Amplop>";

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

6 pemikiran tentang “Lists.ASMX, GetListItems dan folder

  1. Daniel

    Hai

    Saya mencoba untuk menampilkan dokumen di bawah folder tertentu menggunakan SPD 2010 DataSource GetListItems

    Setelah saya terhubung ke layanan web saya dan masukkan guid untuk dokumen Perpustakaan
    Aku dapat mengubah QueryOptions dan masukkan potongan berikut CAML
    TrainingCompanyX kepatuhan.

    Hanya ini tidak memberikan hasil apapun – menghapus QueryOptions parameter mengembalikan semua dokumen dalam perpustakaan dokumen akar….

    Aku memandang melewati beberapa semacam Lihat parameter dan termasuk guid Lihat.

    Balasan
    1. Paul Galvin posting penulis

      Ini adalah sangat tua posting/komentar sangat menyesal untuk tidak pernah menjawab. Saya asumsikan Anda panjang sejak tahu bagaimana untuk melanjutkan.

      Balasan
  2. Bob Bolton

    Oke, Sepertinya dilucuti keluar xml… hanya mengganti pon tanda-tanda di bawah ini dengan tanda pangkat.

    #queryOptions #
    #QueryOptions #
    #Lingkup ViewAttributes = 'RecursiveAll' / #
    #/QueryOptions #
    #/queryOptions #

    Balasan
  3. Doug

    Terima kasih banyak untuk posting ini, Paul. Aku sudah berusaha untuk mengkonsumsi GetListItems melalui ColdFusion cfhttp, dan tidak bisa mendapatkan amplop yang benar. Akhirnya datang di posting ini, dan contoh Anda bekerja sempurna. Terima kasih lagi.

    Balasan
  4. Doug

    BTW – Apakah Anda tahu sumber daya yang berisi daftar semua amplop sabun tepat itu? Satu untuk item GetList diterbitkan pada microsoft.com tidak sesuai Anda di sini…

    Balasan

Tinggalkan balasan

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai *