Saya telah melakukan beberapa kajian untuk orang hari ini di sekitar perkhidmatan web list.asmx disediakan sebagai sebahagian daripada SharePoint 2010 (dan lebih awal). Dia mampu untuk mendapatkan barangan pada senarai folder akar (termasuk nama-nama sub-folder), tetapi tidak boleh mendapatkan item dalam sub-folder. Saya ada melihat di sekeliling di internets dan ia adalah satu soalan yang menghairankan biasa. Namun, Saya tidak boleh mendapatkan jawapan yang baik untuk soalan mudah, "Jika saya tahu folder, bagaimana saya boleh mendapatkan barangan di dalam folder?" Secara jujur, Saya tidak cuba semua yang sukar kerana saya mahu untuk memikirkan satu ini keluar pada saya sendiri untuk seketika .
Untuk menetapkan ini sehingga, Saya telah mencipta laman web yang bernama "Senario Blogging" dan senarai adat dinamakan "Senarai Custom dengan Sub Folder". Saya kemudian mencipta folder bernama:
- Tahun 2005
- Tahun 2006
- Tahun 2007
Saya menambah beberapa item ke folder "Tahun 2006". Ini adalah apa yang kelihatan seperti:
Kawan saya tidak menulis kod C # tetapi sebaliknya menggunakan Java, supaya sampul surat SOAP adalah apa yang dia benar-benar diperlukan. Untuk mendapatkan, Saya menulis sedikit jQuery dan kemudian digunakan pemain biola untuk mendapatkan HTTP perbualan sebenar.
Berikut adalah jQuery yang berkaitan (Saya disalin kod ke bawah jika anda mahu menyalin / menampal):
Mereka kunci pertama adalah untuk memasukkan kedua-dua <queryOptions> dan <QueryOptions> nod. Kunci kedua adalah bahawa <Folder> nod adalah URL yang pelanggan mempunyai akses.
Mungkin ada cara lain untuk mendapatkan ini, tetapi ini berjalan dengan baik bagi saya apabila menggunakan jQuery.
Berikut adalah sampul surat SOAP untuk di atas:
<soapenv:Xmlns sampul surat:soapenv =’http://schemas.xmlsoap.org / sabun / sampul surat /’>
<soapenv:Badan>
<GetListItems xmlns =’http://schemas.microsoft.com / SharePoint / sabun /’>
<listName>Senarai adat dengan Sub Folder</listName>
<viewFields>
<ViewFields>
<FieldRef Nama = 'Tajuk’ />
<FieldRef Nama = 'EncodedAbsUrl’ />
</ViewFields>
</viewFields>
<queryOptions>
<QueryOptions>
<Folder>http://demoserver1/Blogging Senario / senarai / Senarai Custom dengan Sub Folder / Tahun 2006</Folder>
</QueryOptions>
</queryOptions>
</GetListItems>
</soapenv:Badan>
</soapenv:Sampul surat>
Banyak contoh-contoh dan perbincangan sekitar ini membawa saya untuk mempercayai bahawa semua saya perlukan adalah <QueryOptions> dan berikan satu nama folder. Bagi saya, Saya perlu kedua-dua balut ia di dalam <queryOptions> serta menentukan URL yang berkelayakan sepenuhnya untuk <Folder> nod.
Berikut adalah persediaan AJAX jQuery:
$(dokumen).bersedia(fungsi() {
var soapEnv =
"<soapenv:Xmlns sampul surat:soapenv =’http://schemas.xmlsoap.org / sabun / sampul surat /’> \
<soapenv:Badan> \
<GetListItems xmlns =’http://schemas.microsoft.com / SharePoint / sabun /’> \
<listName>Senarai adat dengan Sub Folder</listName> \
<viewFields> \
<ViewFields> \
<FieldRef Nama = 'Tajuk’ /> \
<FieldRef Nama = 'EncodedAbsUrl’ /> \
</ViewFields> \
</viewFields> \
<queryOptions> \
<QueryOptions> \
<Folder>http://demoserver1/Blogging Senario / senarai / Senarai Custom dengan Sub Folder / Tahun 2006</Folder> \
</QueryOptions> \
</queryOptions> \
</GetListItems> \
</soapenv:Badan> \
</soapenv:Sampul surat>";
</akhir>
Mengikuti aku di Twitter http://www.twitter.com/pagalvin