2009-10-09 8 views
2

Considérez ce site SharePoint hiérarchie:SharePoint WebPart Requête de contenu - Ignorer niveau actuel

- Site Collection 
- Site1 
    - Subsite1 
     - AnotherSubsite1 
      - Page1 
      - Page2 
     - AnotherSubsite2 
    - Subsite2 
     - Page3 
     - Page4 
- Site2 

Vous pouvez supposer que chaque site dans la hiérarchie ci-dessus a une page par défaut.

Si je place un CQWP sur la page par défaut de Site1, puis-je lui demander de commencer à obtenir des données d'un niveau inférieur à celui où il a été placé? dire ignorer la page/site, il est actuellement, de sorte qu'il retourne:

 - Subsite1 
     - AnotherSubsite1 
      - Page1 
      - Page2 
     - AnotherSubsite2 
    - Subsite2 
     - Page3 
     - Page4 

Merci

Répondre

3

je prolonger la CQWP puis brancher mon propre ProcessDataDelegate pour supprimer les données qui n'est pas nécessaire. Par exemple:

protected override void OnInit(EventArgs e) 
{ 
    this.ProcessDataDelegate += ProcessItems; 
} 

public DataTable ProcessItems(DataTable data) 
{ 
    // Query the DataTable and remove unnecessary information 
} 

La colonne webid dans data est le GUID pour l'objet SPWeb de chaque article retourné. Rechercher SPWeb.ID des sites que vous ne voulez plus, puis supprimez ces lignes. Notez que les GUID dans la colonne WebId sont en majuscules et au format "D" comme décrit dans Guid.ToString(). N'oubliez pas d'utiliser AcceptChanges() à la fin pour vous assurer que le DataTable est mis à jour.

+0

C'est une approche intéressante, je pourrais facilement obtenir une référence au site actuel et l'exclure –

+0

Un coup d'oeil rapide avec Reflector montre que le CQWP n'est pas conçu pour supporter plusieurs URL. Je pense que descendre cette route serait long et douloureux. –

+0

Gotcha, votre approche pour utiliser le GUID de l'objet SPWeb serait beaucoup plus propre –

Questions connexes