Lists.asmx, GetListItems và thư mục

Tôi đã làm một số nghiên cứu cho một ai đó ngày hôm nay trên các dịch vụ web list.asmx cung cấp như một phần của SharePoint 2010 (và trước đó).  Cô đã có thể nhận được các bản ghi danh sách ở thư mục gốc (bao gồm tên của thư mục con), nhưng không thể có được các mục trong thư mục con.  Tôi đã làm một số tìm kiếm xung quanh trên internets và đó là một câu hỏi phổ biến đáng ngạc nhiên.  Được, Tôi không thể nhận được một câu trả lời tốt các câu hỏi đơn giản, "nếu tôi biết thư mục, làm thế nào để có được các mục trong thư mục?”  Để được trung thực, Tôi đã không thử tất cả những khó khăn kể từ khi tôi đã muốn con số này một ra ngày của riêng tôi trong một thời Nụ cười.

Để thiết lập, Tôi tạo ra một trang web được đặt tên "Viết blog kịch bản" và một danh sách tùy chỉnh tên "Tùy chỉnh danh sách với tiểu Folders".  Tôi sau đó tạo ra thư mục tên:

  • Năm 2005
  • Năm 2006
  • Năm 2007

Tôi thêm một vài bài vào thư mục "Năm 2006".  Đây là những gì nó trông giống như:

image

Bạn bè của tôi không phải là văn bản C# Mã nhưng thay vì sử dụng Java, Vì vậy, phong bì xà phòng là những gì cô ấy thực sự cần.  Để nhận được rằng, Tôi đã viết một chút về jQuery và sau đó sử dụng fiddler để có được cuộc trò chuyện thực tế HTTP.

Ở đây là có liên quan jQuery (Tôi sao chép mã xuống dưới đây nếu bạn muốn sao chép/dán):

image

Họ quan trọng đầu tiên là để bao gồm cả một <queryOptions> và <QueryOptions> nút.  Điều quan trọng thứ hai là các <Thư mục> nút là một URL mà khách hàng có quyền truy cập.

Có thể có những cách khác để có được điều này, nhưng điều này đã làm việc tốt cho tôi khi sử dụng jQuery.

Đây là phong bì xà phòng cho các bên trên:

<soapenv:Phong bì xmlns:soapenv =’http://schemas.xmlsoap.org/Soap/Envelope/’>                
  <soapenv:Cơ thể>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/Soap/’>
      <listName>Tùy chỉnh danh sách với tiểu thư mục</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef tên =' tiêu đề’ />
          <FieldRef tên ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Thư mục>
http://demoserver1/blog Kịch bản/danh sách tùy chỉnh danh sách với tiểu thư mục/năm 2006</Thư mục>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Cơ thể>
</soapenv:Phong bì>

Rất nhiều ví dụ và thảo luận xung quanh này dẫn tôi để tin rằng tất cả tôi cần là <QueryOptions> và chỉ ra tên thư mục.  Đối với tôi, Tôi cần cả hai quấn nó bên trong <queryOptions> cũng như chỉ định một URL đầy đủ điều kiện cho các <Thư mục> nút.

Đây là thiết lập AJAX của jQuery:

$(tài liệu).sẵn sàng(chức năng() {
       var soapEnv =
           "<soapenv:Phong bì xmlns:soapenv =’http://schemas.xmlsoap.org/Soap/Envelope/’> \
               <soapenv:Cơ thể> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/Soap/’> \
                       <listName>Tùy chỉnh danh sách với tiểu thư mục</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef tên =' tiêu đề’ /> \
                              <FieldRef tên ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Thư mục>http://demoserver1/Blogging Kịch bản/danh sách tùy chỉnh danh sách với tiểu thư mục/năm 2006</Thư mục> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Cơ thể> \
           </soapenv:Phong bì>";

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

6 Những suy nghĩ trên "Lists.asmx, GetListItems và thư mục

  1. Daniel

    Chào bạn

    Tôi đang cố gắng để hiển thị các tài liệu trong một thư mục cụ thể bằng cách sử dụng một SPD 2010 DataSource GetListItems

    Một khi tôi kết nối đến dịch vụ web của tôi và nhập guid cho thư viện tài liệu
    Tôi có thể sửa đổi các QueryOptions và nhập vào phần sau của CAML
    Tuân thủ TrainingCompanyX.

    Chỉ có điều này không trả lại bất kỳ kết quả – loại bỏ các tham số QueryOptions trả về tất cả các tài liệu trong thư viện tài liệu gốc….

    Tôi nhìn qua một số loại xem tham số và bao gồm xem guid.

    1. Paul Galvin bài tác giả

      Đây là một rất cũ bài đăng/nhận xét xin lỗi vì không bao giờ trả lời. Tôi giả sử bạn dài kể từ khi đã tìm ra làm thế nào để tiến hành.

  2. Bob Bolton

    Ok, có vẻ như nó tước ra các xml… chỉ cần thay thế các dấu hiệu pound dưới đây với chevrons.

    #queryOptions #
    #QueryOptions #
    #Phạm vi ViewAttributes = 'RecursiveAll' / #
    #/QueryOptions #
    #/queryOptions #

  3. Doug

    Thanks a bunch cho bài đăng này, Paul. Tôi đã cố gắng để tiêu thụ GetListItems via ColdFusion cfhttp, và không thể nhận được phong bì ngay. Cuối cùng đã xem qua bài đăng này, và ví dụ của bạn làm việc hoàn hảo. Cảm ơn một lần nữa.

  4. Doug

    BTW – bạn có biết một tài nguyên danh sách tất cả các phong bì xà phòng thích hợp? Một cho GetList mục công bố trên microsoft.com không khớp với bạn đang ở đây…

Để lại một trả lời Bob Bolton hủy trả lời

Địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *