Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SharePoint Grib's Lair

Journal technique de Sébastien PICAMELOT

WebControls SharePoint : une classe de base plus riche pour vos WebParts avec SharePointOfView

Le framework SharePointOfView que Phil a récemment annoncé comporte un namespace nommé SharePointOfView.WebControls. Au menu de ce namespace, des customs controls, évidemment, et pour commencer deux WebParts.

Pourquoi des customs controls ?

Aux cours de vos développements SharePoint, combien de bouts de code avez vous copié/collé d'un contrôle existant vers un nouveau contrôle ? Combien de Try...Catch pour éviter qu'une erreur provoque un dysfonctionnement complet des pages ? Personnellement, je l'ai fait bien trop souvent. J'ai fini par me faire une WebPart de base dont mes nouvelles webparts héritent, histoire d'y insérer le code que je réutilise le plus souvent. Ont suivi d'autres WebParts que j'ajoutais à mes projets Visual Studio au fil des besoins. C'est donc très naturellement que j'ai souhaité les ajouter au framework SharePointOfView. L'idée est donc de proposer des bases de WebParts riches et génériques.

A ce jour, déjà deux WebParts ont déjà été intégrées au framework, et voici la première d'entres elles :

WebPartBase ("One WebPart to rule them all...")

L'idée de cette WebPart, c'est (essentiellement pour le moment) de permettre aux développeurs de s'affranchir de la gestion d'erreur dans leurs développements, et de la centraliser.

Trois comportements sont incorporés à cette WebPart :

  • Comportement simple :

En cas d'erreur, la WebPart indique simplement qu'une erreur s'est produite. L'affichage de la page n'est pas bloqué. Au delà de l'affichage, la WebPart inscrit la StackTrace dans les fichiers de log SharePoint (à l'aide de la classe d'écriture de logs du framework SharePointOfView)

  • Comportement étendu :

En plus du comportement simple, cette gestion ajoute un lien qui permet de visualiser la StackTrace. Je réfléchis à y indiquer également l'heure de l'erreur. Cette gestion n'est faite que lorsque l'utilisateur courant est administrateur de la collection de sites. On peux facilement imaginer l'utilisation qui pourrait être faite de ce fonctionnement : le responsable fonctionnel / chef de projet (administrateur de la collection de sites ici) est rapidement averti qu'une erreur se produit, réalise une simple capture d'écran et l'envoi aussitôt au(x) développeur(s).

Démonstration :

Parce qu'une petite démo vaut mieux qu'un long discours, je vous propose de regarder tout ça en images :

Fonctionnement

La WebPartBase est marquée comme abstract, et réécrit les méthodes de rendu habituelles pour y incorporer cette gestion d'erreur.

/// Base method that renders the web part.
/// the output stream Html writer
protected sealed override void RenderContents(HtmlTextWriter writer)
{
    try
    {
        base.EnsureChildControls();
        base.RenderContents(writer);
        RenderWebPart(writer);
    }
    catch(Exception ex)
    {
        // Rendering a simple error message instead of the WebPart and logging the real exception
        ManageError(ex).RenderControl(writer);
        SharePointOfView.Diagnostics.ULS.WriteError(ex.ToString(), "WebPartBase : RenderContents");
    }
}

Les méthodes réécrites sont marquées comme sealed de sorte à empêcher toute réécriture de ces méthodes par la suite, et donc la perte de la gestion d'erreur. Il vous faudra donc utiliser l'une des deux méthodes marquées virtual en lieu et place des traditionnelles RenderContents et CreateChildControls :

///
/// Virtual method that replace RenderContents method, so as to ensure error handling.
/// If a failure occurs, a standard message will be shown to the users, and the error will be logged.
/// Besides, the exact exception stack trace will be displayed to the sites collection administrators.
///
/// the output stream Html writer
protected virtual void RenderWebPart(HtmlTextWriter writer)
{

}

///
/// Virtual method that replace CreateChildControls method, so as to ensure error handling.
/// If a failure occurs, a standard message will be shown to the users, and the error will be logged.
/// Besides, the exact exception stack trace will be displayed to the sites collection administrators.
///
protected virtual void CreateWebPartControls()
{

}

Cette WebPart devrait évoluer pour localiser le message d'erreur standard. N'hésitez pas à laisser un commentaire si vous avez des remarques ou des suggestions sur cette WebPart.

Pour conclure, je vous rappelle que le projet SharePointOfView est disponible sur codeplex.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mardi 1 juillet 2008 00:50 par Gribouillon
Classé sous : ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01