Tag Archives: SharePoint Web Services

Lists.asmx, GetListItems และโฟลเดอร์

ฉันได้ทำงานวิจัยบางบุคคลวันนี้รอบบริการเว็บ list.asmx ให้เป็นส่วนหนึ่งของ SharePoint 2010 (และรุ่นก่อนหน้า).  เธอได้รับในรายการที่โฟลเดอร์ราก (รวมทั้งชื่อของ sub-folders), แต่ไม่ได้รับสินค้าใน sub-folders  ไม่บางอย่างรอบคอบในการ internets และคำถามทั่วไปอย่างแปลกใจ  ยัง, ฉันไม่สามารถได้รับคำตอบสำหรับคำถามที่วิดี, "ถ้ารู้ว่าโฟลเดอร์, ฉันรับสินค้าในโฟลเดอร์?”  จะซื่อสัตย์, ไม่ได้พยายามทั้งหมดที่หนักเนื่องจากผมได้ต้องการรูปหนึ่งนี้ออกด้วยตัวเองสำหรับในขณะ ยิ้ม.

การตั้งค่านี้, ไซต์มีชื่อว่า "สถานการณ์ของบล็อก" และรายการแบบกำหนดเองที่ชื่อว่า "กำหนดเองรายการกับโฟลเดอร์ย่อย" สร้าง  สร้างโฟลเดอร์ชื่อแล้ว:

  • ปี 2005
  • ปี 2006
  • ปี 2007

เพิ่มเพียงไม่กี่รายการไปที่โฟลเดอร์ "ปี 2549"  นี่คือสิ่งที่มีลักษณะเหมือน:

image

เพื่อนของฉันไม่ได้เขียน C# โค้ด แต่แทนที่จะ ใช้ Java, ดังนั้น ละครซองจดหมายถูกอะไรเธอจริง ๆ ต้อง  รับที่, ฉันเขียนบิตของ jQuery และใช้ fiddler รับสนทนา HTTP ที่แท้จริงแล้ว.

นี่คือ jQuery เกี่ยวข้อง (คัดลอกรหัสลงด้านล่างหากคุณต้องการคัดลอก/วาง):

image

พวกเขาแรกคีย์คือการ รวมทั้งสองแบบ <queryOptions> และ <QueryOptions> โหนด  ปุ่มที่สองคือที่ <โฟลเดอร์> โหนดคือ URL ที่ไคลเอ็นต์เข้า.

อาจจะมีวิธีอื่น ๆ ที่ได้รับนี้, แต่นี้ทำงานได้ดีสำหรับฉันเมื่อใช้ jQuery.

นี่คือละครซองจดหมายสำหรับด้านบน:

<soapenv:Xmlns ซองจดหมาย:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:เนื้อความ>
    <GetListItems xmlns =’
http://schemas.microsoft.com/sharepoint/soap/’>
      <listName>รายการที่กำหนดเองกับโฟลเดอร์ย่อย</listName>
      <viewFields>  
        <ViewFields>
          <ชื่อ FieldRef =' ชื่อเรื่อง’ />
          <ชื่อ FieldRef ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <โฟลเดอร์>
http://demoserver1/บล็อก รายการสถานการณ์/รายการ/กำหนดเองกับ Sub โฟลเดอร์/ปี 2549</โฟลเดอร์>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:เนื้อความ>
</soapenv:ซองจดหมาย>

ตัวอย่างและการอภิปรายรอบนี้มากมายทำให้ฉันเชื่อว่า ทั้งหมดที่ต้องแก้ไข <QueryOptions> และระบุชื่อโฟลเดอร์  สำหรับฉัน, ฉันต้องการทั้งสองตัดนั้นภายใน <queryOptions> ตลอดจนระบุ URL ที่ครบถ้วนสำหรับการ <โฟลเดอร์> โหนด.

นี่คือการตั้งค่าของ jQuery AJAX:

$(เอกสาร).พร้อม(ฟังก์ชัน() {
       var soapEnv =
           "<soapenv:Xmlns ซองจดหมาย:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:เนื้อความ> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/sharepoint/soap/’> \
                       <listName>รายการที่กำหนดเองกับโฟลเดอร์ย่อย</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <ชื่อ FieldRef =' ชื่อเรื่อง’ /> \
                              <ชื่อ FieldRef ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <โฟลเดอร์>http://demoserver1/Blogging รายการสถานการณ์/รายการ/กำหนดเองกับ Sub โฟลเดอร์/ปี 2549</โฟลเดอร์> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:เนื้อความ> \
           </soapenv:ซองจดหมาย>";

</สิ้นสุด>

สมัครสมาชิกไปยังบล็อกของฉัน.

ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin