Visual Web Parts

Introduction aux Visual Web Parts


Le concept de Web Part est très connu sous SharePoint 2007, mais il est relativement inconfortable. Effectivement, sous SharePoint 2007, rien n'était prévu pour faire "le design" de notre Web Part de manière performante. Effectivement, on était obligé de taper tout le code relatif à l'affichage de la Web Part.

Avec SharePoint 2010, ce problème a été résolu par l'introduction d'un nouveau type de projet : les Visual Web Part. Après un rapide coup d'œil à l'architecture de ce type de projet, on se rend vite compte que c'est une simple "adaptation" d'une Web Part classique. Nous allons voir cela en nous basant sur exemple simple.

Exemple



Commencez en ouvrant Visual Studio 2010 et créez un projet du type Empty SharePoint Project et nommez le AreaProg.VisualWebParts.Example1 :



Définissez cette solution comme étant une solution de ferme (farm-solution). Effectivement, une Visual Web Part contiendra des fichiers à déployer dans certains dossiers "systèmes" de SharePoint, votre solution ne pourra donc être "sandboxée". Cliquez maintenant avec le bouton droit de votre souris sur votre projet et choisissez Add > New Item. Dans la fenêtre qui apparait, choisissez Visual Web Part et nommez la VWPExample :



L'architecture ainsi générée est la suivante :



Nous allons renommer la feature pour lui donner un nom plus explicite. Cliquez donc sur le dossier Feature1 et renommez la en VWPExample. Penchons nous maintenant sur l'architecture de notre Web Part. Premièrement, nous avons le fichier Elements.xml contenant le code suivant :



Ce code XML va nous permettre d'uploader le fichier .webpart dans la galerie des Web part du site. Ainsi, celle-ci pourra être proposée lorsque l'on voudra ajouter une Web Part sur une page. Cette liste est du type 113 (attribut List) et son chemin d'accès est _catalogs/wp (attribut Url).

La seule propriété que nous allons modifier est celle-ci :



Cette propriété permet de définir le nom du dossier qui contiendra votre Web Part dans la liste des Web Parts. Remplacez donc la valeur actuelle par AreaProg. Au final, votre fichier ressemblera à :



Le fichier suivant sur lequel nous allons nous pencher est VWPExample.webpart. Ce fichier va contenir la définition de la Web Part. Ce sera ce fichier qui sera uploadé dans la liste catalogs/wp à l'activation de la feature. Voici son contenu :



Nous avons tout d'abord la partie qui va contenir les métadonnées de la Web Part :



Le premier élément (type) va permettre d'indiquer le chemin de la classe qui sera attachée à la WebPart. Nous devons passer le chemin complet vers cette classe ; (namespace.classe), suivi d'une virgule suivie de la signature de la DLL contenant cette classe. Ici, étant donné que c'est la DLL qui résultera de la compilation de la solution courante, nous pouvons mettre $SharePoint.Project.AssemblyFullName$. Cette valeur sera automatiquement remplacée par la signature de la DLL lors de la compilation de notre solution.

L'élément importErrorMessage définit simplement le message d'erreur qui sera affiché si une erreur survient lors de l'importation de la WebPart. Nous avons ensuite deux propriétés de la Web Part :



La première propriété définit le titre qui sera affiché dans la liste contenant les WebPart alors que la deuxième propriété permet d'en définir la description. Modifiez ces deux propriétés de cette manière :



Vient ensuite le fichier VWPExample.cs. Celui-ci va contenir le code de la WebPart :



Vous remarquerez en premier lieu que cette classe dérive de WebPart. Nous avons ensuite cette ligne :



Pour la comprendre, il nous faut d'abord comprendre comment une WebPart est affichée. Pour faire simple, la fonction CreateChildControls va être appelée et se chargera de créer tous les contrôles qui seront affichés par la WebPart. Dans SharePoint 2007, c'est là qu'on définissait "l'interface graphique" de notre WebPart. Maintenant, nous avons ces trois lignes :



La première va charger le fichier ascx nommé VWPExampleUserControl.ascx. Si vous êtes un peu attentif, vous remarquerez que ce fichier est le dernier de notre arborescence que nous n'avons pas encore expliqué. Une fois ce contrôle chargé, nous l'ajoutons bêtement à la WebPart en l'ajoutant à la collection Controls. Nous appelons ensuite la fonction de la classe de base. Vous pouvez également supprimer la fonction RenderContents car elle ne nous servira à rien dans le cas présent.

Ceci nous amène au fichier VWPExampleUserControl.ascx. Comme nous l'avons dit tout à l'heure, ce fichier est un simple UserControl qui va contenir "l'interface graphique" de notre WebPart. Nous allons donc faire une WebPart très basique pour le montrer. Double-cliquez sur ce fichier pour obtenir ceci :



Ces directives vont nous permettre d'utiliser les différents contrôles mis à disposition par ASP.NET et SharePoint. En bas de cette fenêtre se trouve un "bouton Design", cliquez dessus. Vous vous retrouvez alors sur un formulaire personnalisable où il vous suffira de faire glisser des contrôles depuis la Toolbox (onglet à gauche de votre fenêtre) pour créer votre interface graphique.

Dans la boite à outils, cherchez le groupe SharePoint Controls et localisez le contrôle ListProperty. Ce contrôle va simplement vous permettre de récupérer des propriétés de la liste courante. Glissez le sur votre formule et cliquez une fois dessus pour définir ces propriétés. Définissez alors la propriété Property sur Title pour afficher le contenu de la propriété Titre.

Placez ensuite votre curseur devant le contrôle et tapez "Title : ". Compilez et déployez maintenant votre Web Part. Rendez vous alors sur une Web Part Page de votre site SharePoint, cliquez sur l'onglet Page et choisissez Modifier la page. Vous pourrez voir apparaitre un petit dossier nommé AreaProg :



Le titre et la description que nous avons définit tout à l'heure sont bien affichées sur la page. Cliquez alors sur notre Web Part et cliquez sur Ajouter. Au final, votre Web Part affichera :



Ainsi que vous pouvez le constater, la Web Part affiche bien le titre de la liste courante. Cette liste est en fait celle dans laquelle est contenue notre Web Part Page.