Lists.asmx, GetListItems ותיקיות

אני עושה קצת מחקר עבור מישהו היום סביב שירות האינטרנט list.asmx במסגרת של SharePoint 2010 (וגירסאות קודמות).  היא הצליחה לקבל את רשימת הפריטים בתיקיית הבסיס (כולל שמות תיקיות המשנה), אך לא היתה אפשרות לקבל פריטים בתוך תיקיות המשנה.  אני עשיתי את חלקם מביטים למצות והיא שאלה נפוצה באופן מפתיע.  עדיין, ושאני לא יכול לקבל תשובה טובה לשאלה פשוטה, "אם אני מכיר את התיקיה, כיצד ניתן לקבל את הפריטים בתיקיה?”  והאמת, אני לא מנסה כל מה קשה מאז כבר רציתי דמות זו אחת החוצה בכוחות עצמי קצת חיוך.

לשם ביצוע פעולה זו, יצרתי באתר בשם "תרחישים בלוגים" ואת רשימה מותאמת אישית בשם "רשימה עם תת תיקיות מותאמות אישית".  מכן יצרת תיקיות בשם:

  • השנה 2005
  • השנה 2006
  • השנה 2007

הוספתי מספר פריטים לתיקיה "השנה-2006".  דבר זה נראה:

image

החבר שלי לכתוב קוד C # אבל במקום שימוש ב- Java, מעטפת ה-SOAP היה מה היא באמת צריך.  כדי לקבל את זה, אני כתב מעט jQuery, ואז השתמש כנר כדי לקבל את השיחה בפועל של HTTP.

הנה jQuery רלוונטיים (העתקתי את הקוד למטה מתחת אם ברצונך לבצע העתקה/הדבקה):

image

הם המפתח הראשון היא לכלול שני <queryOptions> ו <QueryOptions> צומת.  המפתח השני הוא כי <תיקיה> צומת הוא URL שאליה ללקוח יש גישה.

ייתכן שקיימות דרכים אחרות להשיג את זה, אבל זה עבד טוב עבורי בעת שימוש ב- jQuery.

הנה מעטפת ה-SOAP עבור לעיל:

<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/בלוגים תרחישים/רשימות/מותאם אישית ברשימה עם תת תיקיות/שנה 2006</תיקיה>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:הגוף>
</soapenv:מעטפה>

המון דוגמאות ודיון סביב זה הוביל אותי להאמין כי כל מה שדרוש לי היה <QueryOptions> וציין שם תיקיה.  בשבילי, אני זקוק לשני להקיף אותו בתוך <queryOptions> וכן לציין כתובת URL מלא <תיקיה> צומת.

הנה תוכנית ההתקנה של AJAX jQuery:

$(המסמך).מוכן(פונקציה() {
       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 תרחישים/רשימות/מותאם אישית ברשימה עם תת תיקיות/שנה 2006</תיקיה> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:הגוף> \
           </soapenv:מעטפה>";

</קצה>

מנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

6 מחשבות על "Lists.asmx, GetListItems ותיקיות

  1. דניאל

    היי

    אני מנסה להציג את המסמכים תחת תיקיה ספציפית באמצעות של SPD 2010 מקור הנתונים GetListItems

    פעם להתחבר לשירות האינטרנט שלי, הזן את ה-guid עבור ספריית המסמכים
    אני יכול לשנות את QueryOptions, להזין את החלק הבא של CAML
    תאימות TrainingCompanyX.

    רק זה לא תחזיר תוצאות כלשהן – הסרת את הפרמטר QueryOptions החזרת כל המסמכים בספריית המסמכים שורש….

    אני אני מסתכל עובר כמה סוג של הצג את פרמטר ולכלול את תצוגת ה-guid.

    1. פול Galvin המחבר פוסט

      . זה ישן מאוד פוסט/תגובה כל-כך מצטערת על אף מענה. אני מניח לך הרבה זמן. מאז הבנתי איך להמשיך.

  2. בוב בולטון

    אוקיי, . נראה כאילו זה הוסרו xml… פשוט החלף את בסולמיות מתחת סוגריים זוויתיים.

    #queryOptions #
    #QueryOptions #
    #הצג תכונות היקף = 'הכל רקורסיבי' / #
    #/QueryOptions #
    #/queryOptions #

  3. דאג

    תודה רבה על הפוסט הזה, פול. אני מנסה לצרוך GetListItems ויה ColdFusion cfhttp, לא יכולתי לקבל את המעטפה נכון. בסופו של דבר נתקלתי בפוסט הזה, והדוגמא שלך עבד ללא רבב. שוב תודה.

  4. דאג

    דרך אגב – אתה יודע של משאב המפרט בכל המעטפות סבון מתאים? האחד הפריטים GetList פרסמו ב- microsoft.com לא תואמת את שלך כאן…

תשאיר הודעה

כתובת האימייל שלך לא תפורסם. שדות חובה מסומנים *