2009-06-17 8 views
1

Comment puis-je créer un composant WebPart sharepoint qui accède à une liste et sur lequel peut être appliqué CAML?sharepart webpart avec caml et xslt

Le CAML est nécessaire pour afficher renvoyer uniquement les éléments de liste qui ont le champ avec « Position »> 0

j'ai besoin aussi webpart d'avoir xslt appliqué à cela.

+0

Ajout de l'exigence pour "Position"> 0 pour répondre. –

Répondre

3

Vous devez ajouter le composant WebPart Requête de contenu à votre page (remarque: nécessite MOSS non libre WSS). Cela vous permet d'interroger vos données et d'y appliquer une transformation XSL.

La partie Web vous permet d'interroger une collection de sites, un site Web ou une liste en particulier. Vous pouvez ensuite définir des paramètres pour renvoyer des données d'un certain type et appliquer des filtres, le tri et le groupement. Vous pouvez également choisir le mode d'affichage des données qui apparaît à l'utilisateur final sous la forme d'une liste déroulante d'options. Chacune de ces options est alimentée par une transformation XSL.

This blog post by Heather Solomon est l'une des meilleures ressources pour vous aider à créer votre propre transformation et configurer le CQWP. Il explique également comment vous assurer que tous les champs dont vous avez besoin sont transmis au XSLT (par défaut, cela ne se produit que pour un petit sous-ensemble).

Mise à jour:

Pour retourner uniquement les éléments de la liste où le champ « Position »> 0, il est plus simple de le faire dans XSLT ainsi. Vous devez avoir ajouté le champ Position à CommonViewFields pour qu'il soit transmis au fichier XSLT. Ensuite, dans votre style d'élément personnalisé (en ItemStyle.xsl si vous suivez le poste de Heather), ajouter ce qui suit:

<xsl:if test="@Position &gt; 0"> 
    <!-- Display desired row output --> 
</xsl:if> 

Cela ne tient pas implicitement lorsque "Position" < = 0.

1

Je suis d'accord avec Alex, que le composant WebPart Requête de contenu (CQWP) est la solution à adopter si possible. Cependant, si vous voulez entrer dans le code, vous pouvez faire quelque chose comme ce qui suit. La partie brute est en XML, bien qu'il puisse y avoir un moyen facile de l'intégrer à une forme de XML non personnalisée (quoique moche).

SPList list = web.Lists["My List Name"]; 
SPView view = list.Views["My View Name"]; // This view would define Postion > 0 
SPQuery query = new SPQuery(view); 
SPListItemCollection items = list.GetItems(query); 

// Iterate through results and generate XML 

Si vous ne souhaitez pas utiliser une vue existante, vous devez configurer l'objet SPQuery à la main; définir ses ViewFields, Query et RowLimit au minimum. Vous pouvez utiliser le CAML Query Tool pour vous aider avec ceci.