Le Web Parts rappresentano una caratteristica molto importante nel mondo Sharepoint in quanto tramite questi "componenti" è possibile dare la possibilità ad un utente di personalizzare il contenuto di una pagina, decidendo cosa e dove disporre tali contenuti.
Dal punto di vista di ASP.NET, la Web Part è una "web custom control" e su Sharepoint è possibile sviluppare due diverse tipologie di Web Parts: quelle che derivano direttamente dalla web part di ASP.NET(System.Web.UI.WebControls.WebParts.WebPart) e quelle che derivano dall'implementazione di Sharepoint(Microsoft.SharePoint.WebPartPages.WebPart).
Le ultime sono utili nel momento in cui ho bisogno di sfruttare le caratteristiche di personalizzazione e connettività che Sharepoint mette a disposizione all'interno della sua infrastruttura.
Ci sono molti articoli e post su Internet su come sviluppare Web Parts per Sharepoint e su come farne il deploy, ma questo non è l'obiettivo del post.
Qui voglio solo descrivere come è possibile realizzare rapidamente Web Parts per Sharepoint e metterle in produzione, evitandovi tutta la più o meno faticosa fase di ricerca delle informazioni sul come fare.
FASE 1) Sviluppare la Web Part
La Web Part ha una interfaccia grafica che rappresenta la UI verso l'utente. Le "best-practice" dicono che è consigliabile sviluppare tutta la Web Part da codice, scrivendo tutto quanto serve a gestire eventi e controlli a partire dal metodo CreateChildControls.
Ci sono soluzioni alternative, come le SmartPart di Jab Tielens. Io ho adottato una soluzione alternativa, anche se simile, ossia quella di creare degli User Controls da far caricare poi dalla Web Part effettiva.
Quindi, uso STSDEV per creare la mia soluzione in VS2005/2008 contenente tutto ciò che serve sia per il codice della web part che per i vari elementi(feature e manifesti wsp) necessari al deploy.
Poi creo un progetto web site standard dove invece vado a creare lo user control(ascx) che sarà legato alla web part. Tramite il web site, su cui mettero' comunque la referenza a Microsoft.Sharepoint.dll, posso testare velocemente lo user control durante lo sviluppo come fosse già incluso nella web part.
Nella web part devo solo scrivere del codice per caricare lo user control:
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
namespace My.WebParts
{
public class MyWebPart : WebPart
{
private SPWeb _web;
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this._web = SPContext.Current.Web;
}
protected override void CreateChildControls()
{
this.Controls.Clear();
UserControl usercontrol = (UserControl)Page.LoadControl(@"/usercontrols/MyWebPart.ascx");
this.Controls.Add(usercontrol);
}
}
}
FASE 2) Deploy della Web Part
Usando STSDEV, il deploy è molto semplice in quanto è sufficiente selezionare il tipo di Build che vogliamo eseguire e procedere.
Il deploy da STSDEV, dopo averlo opportunamento configurato la prima volta, in automatico penserà a:
- compilare e creare il package wsp(la solution)
- aggiungere la solution su Sharepoint
- deployare la solution su Sharepoint
- modificare il web.config aggiungendo la webpart nella sezione "safe controls"
Oltre a questo, manualmente dobbiamo creare una cartella \usercontrols nella root del web site di Sharepoint su cui facciamo il deploy per andare a copiarci i file .ascx (e relativi .ascx.cs del code-behind se ne abbiamo).
Fatto questo, è sufficiente collegarsi al nostro sito sharepoint, abilitare la feature delle web parts e testarle.
Conclusioni:
Usando STSDEV e gli UserControl è possibile creare, testare e fare il deploy di web part in modo molto semplice e veloce. L'uso dello user control ci permette di realizzare l'interfaccia utente usando il tipico approccio ASP.NET.
Il deploy richiede qualche operazione manuale in più in quanto è necessario posizionare correttamente gli user controls all'interno del web site di Sharepoint.
STSDEV deve essere opportunamento configurato nei file presenti nella folder DeploymentFiles e per ogni nuova web part aggiunta in RootFiles.
Referenze:
WSS 3.0 webparts development
Building Web Parts for Windows SharePoint Services 3.0
What to know about SmartPart, and LoadControl()