Arsip Tag: Layanan Web SharePoint

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