2016-08-23 2 views
0

J'essaye d'écrire un composant WebPart simple pour Sharepoint 2013 qui recherche toutes les pages d'un certain type de contenu et produit une liste de leurs titres. J'utilise une requête CAML pour rechercher cela. Mais peu importe quelle requête, le résultat que j'ai est juste une liste de tous les fichiers et dossiers dans ce site Sharepoint.CAML pour rechercher des pages renvoie tous les fichiers et dossiers dans un site

Enfin, j'ai réduit la requête CAML à un simple "trouver tout ce qui commence par la lettre T", mais le résultat est toujours sortie tous les fichiers et dossiers dans le niveau racine du site.

Qu'est-ce que je fais mal?

protected override void CreateChildControls() 
    { 
     Label label1 = new Label(); 

     try 
     { 
      SPQuery query = new SPQuery(); 
      query.Query = @"<Query> 
          <Where> 
           <BeginsWith> 
           <FieldRef Name='Title'></FieldRef> 
           <Value Type='Text'>T</Value> 
           </BeginsWith> 
          </Where> 
          </Query>"; 

      using (SPSite site = new SPSite("https://xxxxxx/sites/xxxxx/en/xxxx/")) 
      { 
       using (SPWeb web = site.OpenWeb()) 
       { 
        PublishingWeb pubweb = PublishingWeb.GetPublishingWeb(web); 
        PublishingPageCollection collection = pubweb.GetPublishingPages(query); 

        //now output the results of the query       
        label1.Text = "Items: " + collection.Count.ToString(); 
        for (int i = 0; i < collection.Count; i++) 
        { 
         label1.Text += collection[i].Title + "<br>"; 
        } 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      label1.Text = ex.Message; 
     } 


     Controls.Add(label1); 
    } 

Répondre

0

Weirdly, vous devez faire deux choses:

1) Retirez l'étiquette d'ouverture et de fermeture;

2) Assurez-vous que la requête ne commence pas ou se termine par une ligne vide.

Ensuite, les résultats changeront les bons.