Tag Archives: Services Web SharePoint

Lists.asmx, GetListItems et dossiers

J'ai fait quelques recherches pour quelqu'un d'aujourd'hui autour de list.asmx web service fourni dans le cadre du SharePoint 2010 (et plus tôt).  Elle a réussi à obtenir les éléments de liste dans le dossier racine (les noms des sous-dossiers), mais il n'a pas pu obtenir des éléments dans les sous-dossiers.  J'ai fait quelques recherche sur les internets, et c'est une question très commune.  Encore, Je ne pouvais pas obtenir une bonne réponse à la question simple, « Si je sais que le dossier, Comment puis-je obtenir les éléments dans le dossier?”  Pour être honnête, I Didn't try tout cela dur depuis que j'ai voulu celui-ci sur la figure sur mes propres pendant un certain temps Sourire.

Pour définir cette, J'ai créé un site nommé « Blogging scénarios » et une liste personnalisée nommée « Liste personnalisée avec Sub dossiers ».  Ensuite, j'ai créé des dossiers nommés:

  • Année 2005
  • Année 2006
  • Année 2007

J'ai ajouté quelques éléments dans le dossier « L'année 2006 ».  C'est à quoi il ressemble:

image

Mon ami n'est pas écrire du code c#, mais plutôt à l'aide de Java, Si l'enveloppe SOAP a été ce qu'elle a vraiment besoin.  Pour obtenir que, J'ai écrit un peu de jQuery et ensuite utilisé un violon pour obtenir la conversation réelle de HTTP.

Voici le jQuery pertinent (J'ai copié le code vers le bas ci-dessous si vous souhaitez copier/coller):

image

Ils première clé est d'inclure tous les deux un <queryOptions> et <QueryOptions> nœud.  La seconde clé est que les <Dossier> le noeud est une URL à laquelle le client a accès.

Il y a peut-être d'autres façons d'obtenir ce, mais cela a fonctionné ainsi pour moi lors de l'utilisation de jQuery.

Voici l'enveloppe SOAP de ce qui précède:

<soapenv:Enveloppe xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Corps>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <nom de la liste>Liste personnalisée avec les sous répertoires</nom de la liste>
      <viewFields>  
        <ViewFields>
          <FieldRef nom =' titre’ />
          <FieldRef nom ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Dossier>
http://demoserver1/blog Liste de scénarios/listes/Custom avec Sub dossiers/année 2006</Dossier>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corps>
</soapenv:Enveloppe>

Beaucoup d'exemples et de discussion autour de ce m'a amené à croire que tout ce dont j'ai besoin est <QueryOptions> et spécifiez un nom de dossier.  Pour moi, J'ai à la fois placez-le à l'intérieur <queryOptions> ainsi que de spécifier une URL qualifiée complète pour la <Dossier> nœud.

Voici le programme d'installation de jQuery AJAX:

$(document).prêt(fonction() {
       var soapEnv =
           "<soapenv:Enveloppe xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Corps> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <nom de la liste>Liste personnalisée avec les sous répertoires</nom de la liste> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nom =' titre’ /> \
                              <FieldRef nom ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Dossier>http://demoserver1/Blogging Liste de scénarios/listes/Custom avec Sub dossiers/année 2006</Dossier> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corps> \
           </soapenv:Enveloppe>";

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin